本题思路不难,但在调试程序的过程中还是费了点时间,代码能力还是弱啊,WA了一次,原因是在每次样例运算的最后面没有加memset 函数操作,以后要注意!还有一点,本题给的样例字符串后面还有个空格,应该设法把它去掉。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int i,r,s,t,min,la,lb,flag,n;
char a[1000],b[1000];
int na[1000]={0},nb[1000]={0};
while( gets(a) != NULL && gets(b) != NULL )
{
la=strlen(a); lb=strlen(b);
t=0;
for(i=0; i<la; i++)
if(a[i]=='1' || a[i]=='2')
na[t++]=a[i]-48;
la=t;
t=0;
for(i=0; i<lb; i++)
if(b[i]=='1' || b[i] == '2')
nb[t++]=b[i]-48;
lb=t;
min=10000;
for(i=0; i<=la; i++)
{
r=i; t=0; flag=0;
while(r < la )
{
if( na[r]+nb[t] == 4 )
flag=1;
r++; t++;
}
if(flag == 0)
{
n=i+lb;
if(i+lb<=la)
n=la;
if( n <= min)
min=n;
}
}
for(i=0; i<=lb; i++)
{
r=i; t=0; flag=0;
while(r < lb)
{
if( nb[r]+na[t] == 4 )
flag=1;
r++; t++;
}
if(flag == 0)
{
n=i+la;
if(i+la <= lb)
n=lb;
if(n <= min)
min=n;
}
}
printf("%d\n",min);
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
return 0;
}