經典「猜數字」AABB的遊戲
本帖最後由 enter 於 2015-10-27 17:41 編輯輸入N個數字,可重覆,然後輸入猜的數字,位置和數字都對的是A,數字對但位置不對的則是B,但重覆的數字只能合一個B。
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int n,k,j,a=0,b=0;
cout<<"How many numbers?\n";
cin>>n; //輸入有幾個數字
int answer; //正確答案的陣列
int guess; //猜答案的陣列
int temp; // 將正確答案複製過來的暫存陣列
//先輸入正確答案
for(k=0;k<n;k++)
cin>>answer;
do{
for(k=0;k<n;k++)
//先將正確答案複製到暫存陣列
temp=answer;
//每次循環 a,b 都要歸零
a=0;
b=0;
//輸入所猜數字的陣列
for(k=0;k<n;k++)
cin>>guess;
//先求 a ,就是數字和位置都正確的個數。
for(k=0;k<n;k++)
if(guess==temp)
{
guess=-1;temp=-1; //將本次符合的數字全都改成-1,以免在求B的時候又被重覆計算一次。很重要的一步。
a++;
}
//求數字合但位置不對的個數
for(k=0;k<n;k++)
for(j=0;j<n;j++)
{
if((k!=j)&&(guess==temp)&&(guess>=0&&temp>=0)) //如果陣列位置不等於,但數字一樣,而且,這數字還是大於等於0的才列入計算。
{
b++;guess=-1; //將本次符合的數字全都改成-1,以免在求B的時候又被重覆計算一次。很重要的一步。
temp=-1;
}
}
cout<<"["<<a<<"A, "<<b<<"B]"<<endl;
}while(a!=0||b!=0); //若a和b同時都是0,則遊戲停止。
return 0;
}
頁:
[1]