程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ACM零件C++實現

ACM零件C++實現

編輯:C++入門知識

 

    零件  

Description

有一種工業零件,分成左右兩半,它們的形狀由’X’和空格表示的二維圖形表示,比如:左半的零件形狀如下:

XXXXX

XXX

XXXX

XXX

右半的零件的形狀如下

                    XXX                                                               

                  XXXX                                                               

                  XXXX                                                               

                XXXXX                                                               

所有的左半邊的零件的左邊第一列都是X,所有右半的零件的右邊第一列都是X。

把這樣的左右兩個零件緊密地拼在一起,則可能存在空洞。零件本身也可能有空洞,但不會存在斷裂的零件,每個空洞為一個空格,要求你寫一個程序求出空洞的大小(空格的數目)。

輸入:

第一行是一個整數K,表示有多少個測試用例,以後每一個測試用例占2n+1行。每個測試用例的第一行為一個整數n,(1<=n<=20),從第2行到n+1行為左半零件的二維圖形,從第n+2行到2n+1行為右半零件。左半零件左對齊,最長一行不超過25列,

右半零件右對齊,最長一行不超過25列

輸出:

每行輸出一個測試用例的結果。

Sample Input 

2

4

XXXXX

XXX

XXXX

XXX

    XXX

  XXXX

  XXXX

XXXXX

2

XXXXX

X

XXXXX

    XXX

 

Sample Output 

1

6

#include<iostream>

using namespace std;

char a[21][25],b[21][25];

int len[42];

 

int main()

{

 int k,n;

 cin>>k;

 while(k--)

 {

  cin>>n;

  getchar();

  int i,j,sum1=0,sum2=0;

  for(i=0;i<n;i++)   gets(a[i]);

  for(i=0;i<n;i++)   gets(b[i]);

  for(i=0;i<n;i++)

  {

   sum1=0;sum2=0;

   for(j=0;j<strlen(a[i]);j++)

   {

    if(a[i][j]=='X')

        sum1++;

   }

   for(j=0;j<strlen(b[i]);j++)

   {

    if(b[i][j]=='X')

        sum2++;

   }

   len[i]=sum1;

   len[i+n]=sum2;

  }

  int max=0;

  for(i=0;i<n;i++)

  {

   if(len[i]+len[i+n]>max)

    max=len[i]+len[i+n];

  }

  int sum=0;

  sum=n*max;

  for(i=0;i<n;i++)

  {

   sum=sum-len[i]-len[i+n];

  }

  cout<<sum<<endl;

 }

 return 0;

}

 

摘自 我和我追逐的夢~~~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved