猜單字小遊戲,猜錯7次就輸了,猜錯7次以內猜對單字算贏,不然就算放棄。
同一個字母猜兩次不算錯。
解題:
用anscnt表示答案有幾種字母,
例如:AAB 這樣算A和B兩種
開一個字母表等於1表示是答案中的字母,
猜字母的時候去看字母表,
是1表示猜對,把字母表的1變成2,guesscnt++;
是0表示猜錯,wrong++
如果anscnt==guesscnt表示所有字母都猜對了,
就跳出迴圈不用繼續比囉
例如:
答案:abc
猜 :abcdfgertyuioptrewqwertylkj
輸出:You win.
/* 20150729
* hanting
* UVa 489 - Hangman Judge
* C++
*/
#include <iostream>
using namespace std;
int main()
{
int N;
while(cin>>N and N!=-1)
{
string ans;
string guess;
cin>>ans>>guess;
int AnsTable[123]={0};
int AnsCnt=0,GuessCnt=0;
for(int i=0;i<ans.size();i++)
{
int ch=ans[i];
if(!AnsTable[ch])
{
AnsTable[ch]=1;
AnsCnt++;
}
}
int wrong=0;
for(int i=0;i<guess.size() and AnsCnt!=GuessCnt;i++)
{
int ch=guess[i];
if(AnsTable[ch]==0)
{
wrong++;
}
else if(AnsTable[ch]==1)
{
AnsTable[ch]++;
GuessCnt++;
}
}
bool Win=AnsCnt==GuessCnt;
cout<<"Round "<<N<<endl;
if(wrong<7)
{
if(Win) cout<<"You win."<<endl;
else cout<<"You chickened out."<<endl;
}
else
cout<<"You lose."<<endl;
}
return 0;
}
沒有留言:
張貼留言