UVA340 - Master-Mind Hints

問題描述

猜數字,先給定四個數,然後再輸入四個數,如果數字和位置一致,則a++,如果數字正確,則爲b++,結果輸出(a,b)

思路

學習了map以後,發現可以將各種數據類型聯繫起來,先記錄正確數值,在開始判斷數值且位置相等,則A++,然後計算總共猜對了B個數後結果爲(A,B-A)

代碼

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <vector>
#include <map>
using namespace std;
int main()
{
    int a[1010],b[1010];
    int n,i,t=1;
    int A,B;
    while(cin>>n&&n)
    {
        map<int,int> q;
        cout<<"Game "<<t++<<":\n";
        for(i=0;i<n;i++)
        {
            cin>>a[i];
            q[a[i]]++;  //記錄正確值
        }
        while(1)
        {
            map<int,int>p;
            A=B=0;
            for(i=0;i<n;i++)
            {
                cin>>b[i];
                p[b[i]]++;
                if(a[i]==b[i])      //如果位置和數值一致
                    A++;
            }
            if(b[0]==0)
                break;
            for(i=1;i<=9;i++)       //計算1—9之間總共猜對了B個數
                B+=min(p[i],q[i]);
            printf("    (%d,%d)\n",A,B-A);

        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章