程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVa340 Master-Mind Hints,uva340master-mind

UVa340 Master-Mind Hints,uva340master-mind

編輯:C++入門知識

UVa340 Master-Mind Hints,uva340master-mind


#include <stdio.h>
#include <string.h>

#define MIN(a,b) (((a) < (b)) ? (a) : (b))

int main()
{
    int code[1000];
    int guess[1000];
    int C1[10]; // 數字1~9在code中出現的次數,C1[0]未使用
    int C2[10]; // 數字1~9在guess中出現的次數,C2[0]未使用
    int n, i, S, C, game = 0;
    while (scanf("%d", &n) == 1 && n)
    {
        memset(C1, 0, sizeof(C1));
        for (i = 0; i < n; ++i)
        {
            scanf("%d", code+i);
            ++C1[code[i]];
        }

        printf("Game %d:\n", ++game);

        while (1)
        {
            S = 0; // Strong Match
            memset(C2, 0, sizeof(C2));

            for (i = 0; i < n; ++i)
            {
                scanf("%d", guess+i);
                ++C2[guess[i]];
                if (guess[i] == code[i])
                    ++S;
            }

            if (!guess[0])
                break;

            C = 0; // 1~9在code和guess中同時出現的總次數
            for (i = 1; i < 10; ++i)
            {
                if (C1[i] && C2[i])
                    C += MIN(C1[i], C2[i]);
            }

            printf("    (%d,%d)\n",  S, C-S);
        }
    }

    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved