刽子手游戏(Hangman Judge)
题面:
int solve(void) {
cin >> n; if (n == -1) return 0;
string str1, str2; cin >> str1 >> str2;
s.clear(); w.clear(); // 清空set
cout << "Round " << n << endl;
// 将谜语中的字符存入s中
for (int i = 0; i < str1.length(); ++i) s.insert(str1[i]);
for (int i = 0; i < str2.length(); ++i) {
// 在w中存入没有找到的字符
if (str1.find(str2[i]) == str1.npos) w.insert(str2[i]);
else {
// 玩家可能猜多个谜语中含有的字符,所以在进行擦除时,要确保s中有字符
if (s.find(str2[i]) != s.end())
s.erase(str2[i]);
}
if (s.empty()) { // 已经全部将谜语中的字符猜出来
cout << "You win." << endl;
return n;
}
if (w.size() >= 7) { // 未找到的互不相同的字符大于等于7时
cout << "You lose." << endl;
return n;
}
}
cout << "You chickened out." << endl;
return n;
}
总结:题目难度不大,但自己没有仔细审题,将打印"You chickened out."错写为了"You chicnened out."导致WA题。
|