Master-Mind Hints(猜数字游戏提示)

本题的难点在于求B,如何求B:
题中说B是有多少数字在两个序列都出现过并且位置不对,比如答案序列是1的有2个,猜测序列是1的有1个,我们取其中最小的加到B中,也就是说序列中的每个数字是独立的,尽管大小相等,但是每个相互独立,将这样的每个最小值加到一起便是B的值,但不要忘了还有已经位置相同的数字,所以要把A减掉,才是最终B的值
大佬们真的太nb了orz给各位大佬跪了
#include<stdio.h> int main(void) { int a[1100], b[1100]; int n; int record = 0; while (scanf("%d", &n) && n) { printf("Game %d:\n",++record); //答案序列 for (int i = 0; i < n; i++) scanf("%d", &a[i]); while (true) { int A = 0, B = 0; //猜测序列 for (int i = 0; i < n; i++) scanf("%d", &b[i]); //判断是否结束猜测 if (b[0] == 0) break; //计算A for (int i = 0; i < n; i++) if (a[i] == b[i]) A++; //计算B for (int i = 1; i <= 9; i++) { int c1 = 0, c2 = 0; for (int j = 0; j < n; j++) { if (a[j] == i) c1++; if (b[j] == i) c2++; } if (c1 > c2) B += c2; else B += c1; } //输出结果 printf("(%d,%d)\n", A, B - A); } } return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号