AOAPC I: Beginning Algorithm Contests (Rujia Liu) ::Volume 0. Getting Started
Description
一个人被判死刑,但是要执刑之前,他还有一次玩游戏得生存的机会。
他要玩一个猜字符游戏,出题人给一个单词,要求猜出单词中出现的字符。
他只有7次猜错的机会。
输入他猜的字符,输出他游戏的结果(赢了、输了还是游戏还未结束)。
Type
Water
Analysis
用一个bool数组记录有哪些字符出现,然后模拟猜测过程。
一旦出结果就直接弹出,如果整个字符串猜完后都未出结果,那就是没结果……
Solution
// UVaOJ 489
// Hangman Judge
// by A Code Rabbit
#include <cstdio>
#include <cstring>
int num_round;
char solution[10000];
char guess[10000];
bool letter[26];
int main() {
while (scanf("%d", &num_round) && num_round != -1) {
getchar();
gets(solution);
gets(guess);
memset(letter, false, sizeof(letter));
int cnt_letter = 0;
for (int i = 0; i < strlen(solution); i++)
if (!letter[solution[i] - 'a']) {
letter[solution[i] - 'a'] = true;
cnt_letter++;
}
int cnt_wrong = 0;
bool end = false;
for (int i = 0; i < strlen(guess); i++) {
if (letter[guess[i] - 'a']) {
cnt_letter--;
letter[guess[i] - 'a'] = false;
} else {
cnt_wrong++;
}
if (!cnt_letter || cnt_wrong >= 7) {
printf("Round %d\n", num_round);
printf("%s\n", cnt_letter ? "You lose." : "You win.");
end = true;
break;
}
}
if (!end)
printf("Round %d\nYou chickened out.\n", num_round);
}
return 0;
}