00时 00分 00秒

零件

零件

 
Time Limit : 1000 MS   Memory Limit : 65536 KB
 

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>
#include<stdio.h>
#include<string.h>
using namespace std;
int po[1000],va[10000];
char s[1000];
int main()
{
    int ca,n,temp(0),j,ma(0),sta(0);
    cin>>ca;
    while(ca--)
    {
        cin>>n;
        getchar();
        temp=0;
        ma=999999999;
        sta=0;
        for(int i=0;i<n;i++)
        {
            gets(s);
            for(int j=0;s[j]!='\0';j++)
            {   if(s[j]==' ')
                {
                    sta++;
                }
            }
            po[i] = strlen(s);
            if(po[i]<ma)
             ma=po[i];
        }
        for(int i=0;i<n;i++)
        {
            po[i]=po[i]-ma;
        }
        ma=9999999;
        for(int i=0;i<n;i++)
        {
            gets(s);
            for(j=0;s[j]!='X';j++)
            {;
            }
            va[i]=j;
            if(va[i]<ma)
              ma=va[i];
              for(;s[j]!='\0';j++)
              {
                  if(s[j]==' ' )
                    sta++;
              }
        }
        for(int i=0;i<n;i++)
        {
            va[i]=va[i]-ma;
           if(po[i]-va[i]>temp)
             temp=po[i]-va[i];
        }
        ma=0;
        for(int i=0;i<n;i++)
        {
            ma=ma+va[i]+temp-po[i];
        }
        cout<<ma+sta<<endl;
    }
}

 


posted @ 2015-03-15 21:58  杰克思勒(Jacksile)  阅读(294)  评论(0编辑  收藏  举报