數組-猜數字遊戲的提示

猜數字遊戲的提示:
 

實現一個經典“猜數字”遊戲。給定答案序列和用戶猜的序列,統計有多少數字位置正確(A),有多少數字在兩個序列都出現過但位置不對(B)

輸入包含多組數據。每組輸入第一行爲序列長度n,第二行是答案序列,接下來是若干猜測序列。猜測序列全0時該數組數據結束。n=0時輸入結束。

樣例輸入

4

1 3 5 5

1 1 2 3

0 0 0 0

10

1 2 2 2 4 5 6 6 6 9

1 2 3 4 5 6 7 8 9 1

1 1 2 2 3 3 4 4 5 5

0 0 0 0 0 0 0 0 0 0

樣例輸出

Game 1:

(1,1)

Game 2:

(2,4)

(3,2)

分析:

直接統計可得A,爲了求B,對於每個數字(1~9),統計二者出現的次數c1和c2,則min(c1,c2)就是該數字對B的貢獻。最後減去A的部分。

代碼:

#include <stdio.h>
#include <stdlib.h>
#define maxn 1010

int main()
{
    int n, a[maxn], b[maxn], i, d;
    int kase = 0;
    while(scanf("%d",&n) == 1 && n){
        printf("Game %d:\n", ++kase);
        for(i = 0; i<n; i++) scanf("%d", &a[i]);
        for(;;){
            int A = 0, B = 0;
            for(i = 0; i < n; i++){
                scanf("%d", &b[i]);
                if(a[i] == b[i]) A++;
            }
            if(b[0] == 0) break;
            for(d = 1; d <= 9; d++){
                int c1 = 0, c2 = 0;
                for(i = 0; i < n; i++){
                    if(a[i] == d) c1++;
                    if(b[i] == d) c2++;
                }
                if(c1 < c2) B+= c1; else B += c2;
            }
            printf("  (%d,%d)\n", A, B-A);
        }
    }
    return 0;
}

 

發佈了62 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章