首页 > 代码库 > POJ 2328 Guessing Game(一道让我想哭的水题!)

POJ 2328 Guessing Game(一道让我想哭的水题!)

【题意简述】:就是猜数,我想大家一定会在电视上看过这样类似的节目。

【分析】:WA到死,本来就应该是一道简单的水题,但是由于我本人也很水,在控制字符的输入上有了点小问题,所以做了很久!想的也有点杂,有点多!还是题做得少。

这个是我WA到死的代码!!

// WA 代码!! 

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
	int a;
	char ans[10];
	while(1)
	{
		bool flag = false;
		int Max  = 100;
		int Min  = 0;
		cin>>a;
		if(a == 0)
			break;
		getchar();  // 注意这里要加上这个! 
		gets(ans);
		
		while(1)
		{
			
			if(strcmp(ans,"right on") == 0)
				break;
			if(strcmp(ans,"too high") == 0&&a<Max) // 这里的a<Max 要加上! 
				Max = a;

			if(strcmp(ans,"too low") == 0&&a>Min) // 同样这里也是!!
				Min = a;
			cin>>a;
			getchar();  // 注意这里要加上这个! 
			gets(ans);
		}
		
		if( a < Min || a > Max )
			printf("Stan is dishonest\n");
		else
			printf("Stan may be honest\n");
	}
	return 0;
}



这个是AC代码:

// AC 代码!! 

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
	int a;
	char ans[10];
	while(1)
	{
		bool flag = false;
		int Max  = 100;
		int Min  = 0;
		cin>>a;
		if(a == 0)
			break;
		getchar();  // 注意这里要加上这个! 
		gets(ans);
		
		while(1)
		{
			
			if(strcmp(ans,"right on") == 0)
				break;
			if(strcmp(ans,"too high") == 0&&a<Max)
				Max = a;

			if(strcmp(ans,"too low") == 0&&a>Min)
				Min = a;
			cin>>a;
			getchar();  // 注意这里要加上这个! 
			gets(ans);
		}
		
		if( a > Min && a < Max )
			
			printf("Stan may be honest\n");
		else
			printf("Stan is dishonest\n");
	}
	return 0;
}

看到两个代码的不同了吗?其实就只是我的第一个WA的代码少了个等号,应该是

if( a <= Min || a >= Max )  //  要有等号!!!
			printf("Stan is dishonest\n");


这种边界是最容易出错的地方!!以后要多加注意!

POJ 2328 Guessing Game(一道让我想哭的水题!)