题意:实现一个经典“猜数字”游戏。给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列中都出现过但是位置不对(B)。
输入包含多组,每组输入第一行为序列长度n,第二行是答案序列,接下来是有若干组猜测序列。猜测序列全为0时该组数据结束,n=0时输入结束。
代码如下:
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int ans[1011],n,que[1011],ans_a,ans_b; int main() { int count=1; while(cin>>n) { for(int i=0; i<n; i++) cin>>ans[i]; printf("Game %d:\n",count++); while(1) { int sum=0; ans_a=ans_b=0; for(int i=0; i<n; i++) { cin>>que[i]; sum+=que[i]; } if(!sum)break; for(int i=0; i<n; i++) if(ans[i]==que[i]) ans_a++; for(int i=1; i<=9; i++) { int sum_ans=0,sum_que=0; for(int j=0; j<n; j++) { if(i==ans[j])sum_ans++; if(i==que[j])sum_que++; } if(sum_ans>sum_que)ans_b+=sum_que; else ans_b+=sum_ans; } printf(" (%d,%d)\n",ans_a,ans_b-ans_a); } } return 0; } /* input 4 1 3 5 5 1 1 2 3 4 3 3 5 6 5 5 1 6 1 3 5 1 3 5 5 0 0 0 0 output 1 1 2 0 1 2 1 2 4 0 */
原文地址:http://blog.csdn.net/u014004096/article/details/41381461