比较简单记录一下主要感觉它这个题目没说清楚,题目要求:先有n,接着给出长度为n的标准组,然后给出猜测组,输出的两个数一个是有多少个是相对应的既相同坐标其数值也相同,后一个是两个都有但是位置不同(不含已经相同的)我觉得它少了一类个例子:
类似于
1 2 3 4 3 6
1 3 3 3 4 3
思路:用三个数组一个放对照,一个放猜测,还有一个放相关情况,相关情况在对对照与猜测不同时记录
#include<stdio.h>
int s[10005],f[10005];
struct flag{//用结构定义,对照组和猜测组相联系
int sf;
int gf;
}cnt[10]={0,0,0};
//因为只有1到9的数字
int min(int a,int b) {
if(a<b)
return a;
else
return b;
}
int main(){
int i,N,cnt1,cnt2,n=0;
while(scanf("%d",&N)&&N!=0){
n++;
for(i=0;i<N;i++){
scanf("%d",s+i);
}
printf("Game %d:\n",n);
while(1){
cnt1=0,cnt2=0;
//cnt1表示有多少个相同
//cnt2表示有多少不同
for(i=0;i<N;i++){
scanf("%d",f+i);
if(s[i]==f[i])cnt1++;
//相同不表示
else {
cnt[f[i]].gf++;
cnt[s[i]].sf++;
//不相同则表示出来
}
}
if(f[i-1]==0){
//跳处循环且处理好数据
for(i=0;i<10;i++){
cnt[i].gf=0,cnt[i].sf=0;
}
break;
}
for(i=0;i<10;i++){
if(cnt[i].gf>=0&&cnt[i].sf>=1){
//存在不对等情况
if(cnt[i].gf==cnt[i].sf){
cnt2 += cnt[i].gf;
//如果刚好不对等情况相同
}
else cnt2 += min(cnt[i].gf,cnt[i].sf);
//如果一个多则多出的不要
}
cnt[i].gf=0,cnt[i].sf=0;
}
printf(" (%d,%d)\n",cnt1,cnt2);
}
}
return 0;
}
标签:cnt,1053,猜测,int,ZCMU,gf,cnt2,sf
From: https://www.cnblogs.com/hai-zei/p/18131434