直接在输入时统计A的数目即可,对于B,先统计1~9分别在目标串与比较串中出现的次数aa,bb,而且取小就是该数字对B的贡献,加起来
最终减去A即可。几个月前写时估计我是不理解求B的部分的,只是盲目的为了刷题而刷题,其实还是太急功近利。最近几个月心态很不
好,一度停滞不前甚至都没碰电脑,现在想想其实曾经带给我们的伤痛的事过去那段时间以后那都不是事,他们只是在教会我们成长而已。
从现在起,认认真真的对待自己做的每一件事,对自己负责。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define maxn 1001
int main()
{
int a[maxn],b[maxn],i,j,k,n,cases = 0,d;
while(~scanf("%d",&n) && n)
{
int comm = 0,c1 = 0;
printf("Game %d:\n",++cases);//++cases而不是cases++;
for(i = 0;i < n;i++)
scanf("%d",&a[i]);
for(;;)//输入多组b[];
{
for(i = 0;i < n;i++)
{
scanf("%d",&b[i]);
if(b[i] == a[i])
comm++;
}
if(b[0] == 0) break;
for(d = 1;d <= 9;d++)//统计数字D在a[] b[]中出现的次数;
{
int aa = 0,bb = 0;
for(i = 0;i < n;i++)
{
if(a[i] == d) aa++;
if(b[i] == d) bb++;
}
c1 += aa < bb ? aa : bb;//取二者较小的;
}
printf(" (%d,%d)\n",comm,c1 - comm);
comm = 0;
c1 = 0;
}
}
return 0;
}