1、非常惭愧,本题我读题目花了一小时,写程序到AC只用了十五分钟——实在是理解不了,因为没玩过这个猜数字游戏,后来看一位台湾网友的翻译才明白。
2、大意就是两个数字序列要匹配。给了两个定义——一个strong match:当且仅当两数值相等且下标相等,一个weak match:数值相等下标不等。
3、还有一个independent的限制,也就是两个match是independent当且仅当两个位置互不相同,比如(3,5)和(3,6)就不是independent的。
4、而题目要求输出的是hint,所谓hint就是(strong match数,weak match数),由于题目描述时和match格式相同(都是一个括号加俩数字),导致我一度搞混了两者。
5、注意换行。
#include<stdio.h>
#include<string.h>
int main(void)
{
int n,i,j,a[1010],b[1010],c[1010],count=1;
while(scanf("%d",&n)==1&&n)
{
printf("Game %d:\n",count);
memset(c,0,sizeof(c));
for(i=0;i<n;i++)
scanf("%d",&c[i]);
while(1)
{
int s=0,w=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i<n;i++)
a[i]=c[i];
for(i=0;i<n;i++)
scanf("%d",&b[i]);
if(b[0]==0) break;
for(i=0;i<n;i++)
if(a[i]==b[i])
{
s++;
a[i]=b[i]=0;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i]&&b[j]&&a[i]==b[j])
{
a[i]=b[j]=0;
w++;
}
printf(" (%d,%d)\n",s,w);
}
count++;
}
return 0;
}