UVa 489,紫书P79,刽子手游戏

Posted 树的种子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 489,紫书P79,刽子手游戏相关的知识,希望对你有一定的参考价值。

题目链接:https://uva.onlinejudge.org/external/4/489.pdf

这个题很像之前的一个拓扑排序的题目,思路类似咯。

程序模块化:

每次判断一个字母,lose,win确定就直接退出。

小技巧:

你可以用数组guess[]记录每个字母是否访问过。要是已经访问过,counts++,算是一种错误。

这里汝佳的小技巧是,每次把相同的字符赋值为‘ ’,记录一下str1的长度,查完str1就win。否则就是You chickened out.

#include <stdio.h>
#include <string.h>

int win ,lose;
int left;
int counts = 0;
char str1[110],str2[110];

void guess(char ch)
{
    bool flag = false;
    for(int i=0;i<strlen(str1);i++)
    {
        if(ch==str1[i])
        {
            str1[i] =  ;
            flag = true;
            left--;
        }
    }
    if(!flag) counts++;
    if(counts>6) lose = 1;
    if(left==0) win = 1;
}

int main()
{
    freopen("input.txt","r",stdin);
    int cases;
    while(scanf("%d",&cases))
    {
        counts = 0;
        if(cases==-1) break;
        printf("Round %d\n",cases);
        scanf("%s%s",str1,str2);
        win = lose = 0;

        left = strlen(str1);
        for(int i=0;i<strlen(str2);i++)
        {
            guess(str2[i]);
            if(win||lose)
                break;
        }

        if(win) printf("You win.\n");
        else if(lose) printf("You lose.\n");
        else printf("You chickened out.\n");
    }
    return 0;
}

 

以上是关于UVa 489,紫书P79,刽子手游戏的主要内容,如果未能解决你的问题,请参考以下文章

紫书uva489·坑OJ

算法竞赛入门经典 第四章

uva489

UVa 489 -- Hangman Judge

uva 489 Hangman Judge

紫书例题6-3 (UVa 442)