Description
一个人猜数字yy,给出四种问题及其结果,即是否大于、小于、小于等于、大于等于xx,回答表示是,NN表示不是,问是否有满足所有条件的
Input
第一行一整数nn表示问答次数,之后输入个问答(1≤n≤104,−109≤x≤109)(1≤n≤104,−109≤x≤109)
Output
如果存在满足条件的yy则输出任一解,否则输出
Sample Input
4
= 1 Y
3 N
= -3 N
55 N
Sample Output
17
Solution
简单题,根据限制求出yy的下限和上限,如果的取值范围非空则有解,否则无解
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define maxn 11
char a[maxn],b[maxn];
int n,c,Min,Max;
int main()
{
while(~scanf("%d",&n))
{
Min=-2000000000,Max=2000000000;
while(n--)
{
a[1]='#';
scanf("%s%d%s",a,&c,b);
if(b[0]=='N')
{
if(a[0]=='>'&&a[1]=='=')a[0]='<',a[1]='#';
else if(a[0]=='<'&&a[1]=='=')a[0]='>',a[1]='#';
else if(a[0]=='>'&&a[1]!='=')a[0]='<',a[1]='=';
else if(a[0]=='<'&&a[1]!='=')a[0]='>',a[1]='=';
}
// printf("%c%c\n",a[0],a[1]);
if(a[0]=='>')
{
if(a[1]=='=')Min=max(Min,c);
else Min=max(Min,c+1);
}
else
{
if(a[1]=='=')Max=min(Max,c);
else Max=min(Max,c-1);
}
}
if(Max>=Min)printf("%d\n",Min);
else printf("Impossible\n");
}
return 0;
}

本文介绍了一种猜数字游戏的算法实现,通过一系列比较条件缩小目标数字的范围,最终找到符合条件的数字或判断无解。文章详细展示了如何利用输入条件确定目标数字的上下限,并给出了完整的代码实现。
878

被折叠的 条评论
为什么被折叠?



