UVa 489 Hangman Judge

tech2025-01-28  14

猜字游戏,一共7次机会,有“You win.”、“You lose.”、“You chickened out.” 三种状况,依次是赢了,输了(7次机会用完了),放弃(没用完7次机会就不猜了),这里还规定猜中其中一个字母,凡是出现在该单词里面的这个字母都算被猜中了,而且没有顺序。

#include<iostream> #include<cstring> #include<algorithm> #include<map> using namespace std; bool ans[27]; bool Guess(char s, int& x, map<char, int>m) { if (m[s] && !ans[s - 'a']) { ans[s - 'a'] = true; if (x >= m[s]) x -= m[s]; else x = 0; return true; } else return false; } int main() { int n; while (scanf("%d", &n) && n != -1) { memset(ans, false, sizeof(ans)); map<char, int>m; string a, b; cin >> a >> b; int lena = a.length(), lenb = b.length(); for (int i = 0; i < lena; i++) m[a[i]]++; int left = 7; bool flag = true; for (int i = 0; i < lenb; i++) { if (!Guess(b[i], lena, m)) left--; if (left == 0) { flag = false; break;} if (lena == 0) break; } printf("Round %d\n", n); if (!flag) cout << "You lose." << endl; else if(flag && lena) cout << "You chickened out." << endl; else cout << "You win." << endl; } return 0; }
最新回复(0)