/*
题目大意:给出两个字符串
如果第二个字符串中出现了和第一个字符串相同的字符,比如字符e,则第一个字符串的那个字符e全部消失
也就是第二个字符串的那个字符e再次出现时,第一个字符串表示没有这个字符e了
如果第二个字符串出现了一个字符,在第一个字符串找不到相同的字符,则表示出错,出错的次数最多为7次
错误次数超过7输出You lose;第一个字符串的字符全部消失输出You win;如果既没有错超七次第一个字符串
字符的又没有全部消失,则输出You chickened out.
*/
#include <iostream>
#include <stdio.h>
#include <string.h>
char answer[110];//两个字符数组
char guest[110];
using namespace std;
int main(void)
{
int lose;//还能错误的次数,它为零则输出错误
int win;//第一个字符串的字符剩余的个数,它为零则输出正确
int n;//编号
while (scanf_s("%d", &n) != EOF && n != -1)
{
printf("Round %d\n", n);
//格式需要
cin >> answer;
cin >> guest;
win = strlen(answer);//第一个字符串中未消失的字符数量
lose = 7;//最大出错的次数为7
for (int i = 0; guest[i]; i++)
{
bool ok = true;
//用来判断第二个字符串中的当前字符是否在一中也有
for (int j = 0; answer[j]; j++)
{//这里遍历全部的第一个字符串,是为了把一中的当前字符全部消除掉
if (answer[j] == guest[i])
{//如果字符串一中出现了和二当前字符一样的字符
ok = false;//就false掉
win--;//然后当前字符消失
answer[j] = ' ';//用空格表示消除掉这个字符
}
}
if (ok)
lose--;//如果一中没有字符,那能够错的次数就减一
if (!lose || !win)
break;//其中一者为零,结束这场游戏
}
if (win == 0)
printf("You win.\n");
else if (lose == 0)
printf("You lose.\n");
else
printf("You chickened out.\n");
}
return 0;
}
UVA - 489 - Hangman Judge
最新推荐文章于 2020-03-10 16:22:37 发布