問題描述
猜數字,先給定四個數,然後再輸入四個數,如果數字和位置一致,則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;
}