刽子手游戏(Hangman Judge, UVa 489) 算法竞赛入门

思路 ①猜测的时候,不是一个一个字母的输入,而是一口气输入一行,然后一口气交给计算机判断。

        ②所以chickened out 的意思就是,你输入的那一行数,导致机会没用完,也没有把数猜完

        

#include <stdio.h>
#include <string.h>
#define maxn 100
int win, lose,left,chance;
char s[maxn], s2[maxn];

void guess(char ch);
int main()
{
	int rnd;
	while(scanf("%d%s%s", &rnd, s,s2) == 3 && rnd != -1)
	{
		printf("Round %d:\n", rnd);
		left = strlen(s);
		chance = 7;
		for(int i = 0; i < strlen(s2); i++)
		{
			guess(s2[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;
}

void guess(char ch)
{
	int bad = 1;
	for(int i = 0; i < strlen(s); i++)
	{
		if(ch == s[i])
		{
			left--;
			s[i]= ' ';
			bad = 0;
		}
		if(bad)
			chance--;
		if(!chance)
			lose = 1;
		if(!left)
			win = 1;
	}
}
时隔一个学期再来看这个题目,感觉,更清楚了一点。

猜你喜欢

转载自blog.csdn.net/JustinAndy/article/details/80372378