题目https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=832&page=show_problem&problem=430
刽子手游戏。题目较长,理解以后很容易…
就是猜词游戏,输入电脑给的字符串题目和玩家猜测的单词,如果答案中有这个单词,则所有的该单词都会显示出来,有7次机会,猜曾经猜对的单词算错。
注意:重复猜算错,所以把猜对的赋值为’ ‘ 空格。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <fstream>
using namespace std;
const char *s[]={"You lose.","You win.","You chickened out."};
int guess(string sa,string sg){ //返回0失败,1成功。2放弃
int bin=0; //是否猜中
int chance,left;
chance = 7;
left = sa.size();
for (int i = 0;i < sg.size(); i++){
bin=0;
for(int j = 0; j < sa.size();j++){
if(sg[i]==sa[j]){
sa[j] = ' ';
left--;
bin=1;
}
}
if(bin == 0){ //没有猜中
chance--;
}
if(chance == 0) return 0;
else if(left == 0) return 1;
}
return 2;
}
int main(){
int t;
string sa,sg;
ifstream cin("UVa489.txt");
while(cin>>t&&t&&t!=-1){
cin>>sa>>sg;
int status = guess(sa,sg);
printf("Round %d\n",t);
printf("%s\n",s[status]);
sa.clear();sg.clear();
}
return 0;
}