一道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<stdio.h>
#include<math.h>
char a[30][30],b[30][30];
int s[50];
int main()
{
int k,n,i,j,max=0,s1=0,s2=0,sum=0;
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
getchar();
for(i=1;i<=n;i++) gets(a[i]);
for(i=1;i<=n;i++) gets(b[i]);
for(i=1;i<=n;i++)
{
j=1;
while(a[i][j]!='\0'){if(a[i][j]=='X') s1++;j++;}
j=1;
while(b[i][j]!='\0'){if(b[i][j]=='X') s2++;j++;}
s[i]=s1;s[i+n]=s2;
}
for(i=1;i<n;i++)
{
if(s[i]+s[i+n]>max) max=s[i]+s[i+n];
}
sum=n*max;
for(i=1;i<=n;i++)
{
sum=sum-s[i]-s[i+n];
}
printf("%d\n",sum);
max=0;s1=0;s2=0;sum=0;
}
return 0;
}