码迷,mamicode.com
首页 > 其他好文 > 详细

FZU 1575 小学生的游戏【模拟二分】

时间:2017-12-10 01:28:33      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:closed   play   分析   分享图片   ide   too   scanf   nes   class   

某天,无聊的小斌叫上几个同学玩游戏,其中有比较笨的小兴,比较傻的小雪,可爱的小霞和自以为是的小楠。他们去找聪明的小明去给他们当裁判。判定谁取得游戏胜利。

而这个游戏是由小斌想个1到10000000的数字让大家猜,看谁先猜中。为了防止小斌作弊,小明记录下了游戏的整个过程。你的任务是判断小斌是否有作弊。

Input

输入数据包括多盘游戏。一次猜数包含两行,第一行是一个数字n(1<=n<=10000000),表示所猜数字。第二行是小斌的回答为"too high","too low","right on"三种答案之一。每盘游戏结束于"right on"。当n=0的时候,整个游戏结束。

Output

对于每盘游戏,若小斌确有撒谎,请输出一行"The guy is dishonest",否则请输出"The guy may be honest"。

Sample Input

10
too high
3
too low
4
too high
2
right on
5
too low
7
too high
6
right on
0

Sample Output

The guy is dishonest
The guy may be honest
【分析】:分别在too high和too low时比较数字的大小,选出最小low值和最大high值,比较right on说出的数字合法(在low和high范围内为合法)与否。注意置位!

【代码】:
技术分享图片
#include <iostream>
#include<string>
#include<algorithm>
#include<cstdio>
using namespace std;
#define oo 10000000
int n;
char a[500];
/*模拟二分*/
int main()
{
    int low=-1,high=oo;
    while(~scanf("%d",&n),n)
    {
        getchar();
        gets(a);
        if(a[4]==h)
        {
            if(high>n)
                high=n;
        }
        if(a[4]==l)
        {
            if(low<n)
                low=n;
        }
        if(a[0]==r)
        {
            if(n<high&&n>low)
            {
                puts("The guy may be honest");
            }
            else
            {
                puts("The guy is dishonest");
            }
            low=-1,high=oo;
        }
    }
}
模拟

 

  

FZU 1575 小学生的游戏【模拟二分】

标签:closed   play   分析   分享图片   ide   too   scanf   nes   class   

原文地址:http://www.cnblogs.com/Roni-i/p/8013159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!