本帖最後由 domen111 於 2014-8-27 21:45 編輯
[C++] 純文本查看 復制代碼 #include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
srand(time(NULL));
bool log=true,idiot=false;
int a=0,d=0,e=0,num=0;
char b[4],c[5];
while(a<4)
{
b[a]=rand()%10+'0';
for(int q=0;q<a;q++)
{
if(b[a]==b[q])
log=false;
}
if(log)
a++;
log=true;
}
//cout<<b<<endl;
while(cin>>c)
{
num++;
if(num>20)
break;
for(int q=1;q<4;q++)
{
for(int w=0;w<q;w++)
{
if(c[q]==c[w])
{
idiot=1;
break;
}
}
if(idiot)
break;
}
if(idiot)
{
idiot=0;
cout<<"You idiot"<<endl;
continue;
}
if((c[1]=='\0')||(c[2]=='\0')||(c[3]=='\0')||(c[4]!='\0'))
{
cout<<"You idiot"<<endl;
continue;
}
for(int q=0;q<4;q++)
{
for(int w=0;w<4;w++)
{
if(b[q]==c[w])
if(q==w)
d++;
else
e++;
}
}
if(d==4)
{
cout<<"You win"<<endl;
break;
}
cout<<d<<" A "<<e<<" B"<<endl;
d=0;
e=0;
}
return 0;
}
題目: 1A2B
可憐的喬韋小廢物正在玩1A2B的遊戲,然而笨笨的他已經連輸二十次了。你可以設計一個程式幫助喬韋贏得遊戲嗎?
遊戲規則: 電腦會產生四個不重複的數字,而你要猜出這四個數字。每次輸出四個數字,電腦會回傳 幾A幾B (ex: 1A2B)。A 代表數字對且位置不對,而B代表數字對但位置不對。
輸出說明:
四個數字。
注意: 若輸出不到四個或超過四個數字,或是輸出的數字重複,電腦將不會輸入。
另外: 為了避免各位從最小的 0123 一直輸出到最大的 9876,共5040次。因此為了減輕各位的負擔,同時顯示各位的智商高於喬韋小廢物,輸出次數不得超過 20次。
輸入說明:
一個數字,字元’A’, 一個數字,字元’B’,皆以空格隔開。
範例輸出:
6548
範例輸入:
2 A 2 B (答案: 6845)
|