#include<cstdio>
#include<cstring>
struct NUM
{
int x[10];
}s[2];//定义两个数组统计1-9出现的次数
int t = 1;
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
int N;
while((scanf("%d",&N),N)!=0)
{
memset(s,0,sizeof(s));
int str_1[N+5],str_2[N+5],ok[10];
memset(ok,0,sizeof(ok));
for(int i = 0; i < N; i++)
{
scanf("%d",&str_1[i]);
s[0].x[str_1[i]]++;//在str1中出现的数字的个数
ok[str_1[i]] = 1;//在str1中出现的数字
}
printf("Game %d:\n",t++);
for(int k = 0; ; k++)
{
int n ,m;
n = m = 0;
for(int i = 0; i < 10; i++)
s[1].x[i] = 0;//数组初始化
for(int i = 0; i < N; i++)
{
scanf("%d",&str_2[i]);
if(ok[str_2[i]])//统计str2在str1中出现的数字的个数
s[1].x[str_2[i]]++;
}
if(str_2[0]==0)break;//结束标识
for(int i = 1; i < 10; i++)
if(s[1].x[i]>s[0].x[i])
s[1].x[i] = s[0].x[i];//在str2中出现的个数多于str1中出现的个数则取最小的
for(int i = 0; i < N; i++)
if(str_1[i]==str_2[i])
{s[1].x[str_1[i]]--;n++;}//有一个相同n++ 相应的数字个数--
for(int i = 1; i < 10; i++)
if(s[1].x[i]!=0)
m += s[1].x[i];//统计在str2中出现的 但是没有在正确位置的个数
printf(" (%d,%d)\n",n,m);
}
}
return 0;
}
uva 340 Master-Mind Hints
最新推荐文章于 2020-10-26 13:47:34 发布