UVa 489 HangmanJudge --- 水题

Posted tan90丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 489 HangmanJudge --- 水题相关的知识,希望对你有一定的参考价值。

 

  UVa 489

  题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错,

       你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜过的单词也算出错,

       给定计算机的单词以及猜测序列,判断玩家赢了(You win)、输了(You lose)、放弃了(You chickened out)

/* UVa 489 HangmanJudge --- 水题 */
#include <cstdio>
#include <cstring>

int kase;
char a[105], b[105];
int len1, len2;
int left, chance;
int win, lose;

/* 猜字母ch */
void guess(char ch){
    bool bad = 1; //默认猜错
    for (int i = 0; i < len1; ++i){
        //若相等则猜对
        if (ch == a[i]){
            --left;
            bad = 0;    //更改猜错标记
            a[i] = \' \';    //更改此处字符,下次再猜算猜错
        }
    }//for(i)
    if (bad){
        --chance;
    }

    if (!left){
        win = 1;
    }
    else if (!chance){
        lose = 1;
    }

}

int main()
{
#ifdef _LOCAL
    freopen("D:\\\\input.txt", "r", stdin);
#endif

    while (scanf("%d", &kase) == 1 && kase != -1){
        scanf("%s%s", a, b);    
        
        win = lose = 0;    //还没赢也还没输
        chance = 7;    //剩余7次机会
        left = len1 = strlen(a);    //剩余left个字母还没猜对
        len2 = strlen(b);
        for (int i = 0; i < len2; ++i){
            guess(b[i]);    //猜字母
            if (win || lose){
                break;
            }
        }
        printf("Round %d\\n", kase);
        if (win){
            printf("You win.\\n");
        }
        else if (lose){
            printf("You lose.\\n");
        }
        else{
            printf("You chickened out.\\n");
        }

    }//while(scanf)

    return 0;
}
View Code

 

以上是关于UVa 489 HangmanJudge --- 水题的主要内容,如果未能解决你的问题,请参考以下文章

UVA-489 Hangman Judge

UVa 489:Hangman Judge

算法竞赛入门经典 第四章

uva 489 Hangman Judge

uva489

紫书uva489·坑OJ