本题思路不难,但在调试程序的过程中还是费了点时间,代码能力还是弱啊,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; }