传送门:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1926
题目大意:两人在猜数字,1~10,对于其中一个猜的数,Stan给出"too high", "too low", or "right on".如果Stan给出的是假的,那么输出Stan is dishonest否则输出Stan may be honest 每个例子均以right on结束
注意范围缩小时候输入的x应该在现在的范围内。否则区间就会扩大区间导致WA
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char action[32];
int main()
{
int x;
int low=0,high=11;
bool ok=true;
while(scanf("%d",&x),x)
{
//getchar();
gets(action);
//cout<<action<<endl;
if(strcmp(action,"too high")==0 && x<high )
high=x;
else if(strcmp(action,"too low")==0 && x>low)
low=x;
else if(strcmp(action,"right on")==0)
{
if(x<high && x>low )
printf("Stan may be honest\n");
else
printf("Stan is dishonest\n");
low=0;
high=11;
}
}
}