Constraint Checker hiho一下第176周
来源:互联网 发布:个人发卡网源码授权 编辑:程序博客网 时间:2024/05/29 17:37
题意: 题目给出一组由小于号和小于等于号组成的表达式,表达式中可能有变量和数字。然后再给出几组对应的变量值,判断每一组给出的变量值是否符合表示式。
思路: 试想一下如果我们知道了所有变量的值,将其存下来,然后只需要对每个式子从左到右遍历判断一遍就得到结果了。存储数据时我的思路如下(拿样例举个例子):
式子: A < B <= E
num: -1 -1 -1 //用 num 数组来存现有的数字,如果是变量则存入 -1
alph: A B E //用 alph 数组来存入当前的变量是哪个字母
eql: false true false //为 true 表示当前位的数或变量应小于等于下一位的数
代码:
#include<cstdio>#include<cstring>#include<cstdlib>#include<stack>#include<queue>#include<utility>#include<vector>#include<cmath>#include<set>#include<map>#include<iostream>#include<algorithm>#include<sstream>using namespace std;typedef long long LL;int N, T;int num[25][1000];char alph[25][1000];bool eql[25][1000];int alphval[30];char str[1000];set<char> sset;void Solve(int row){ memset(num[row], 0, sizeof(num[row])); memset(alph[row], 0, sizeof(alph[row])); int len = strlen(str); for(int i=0; i<len; i++){ if(str[i]>='A' && str[i]<='Z'){ num[row][++num[row][0]] = -1; alph[row][num[row][0]] = str[i]; sset.insert(str[i]); } else if(str[i]>='0' && str[i]<='9'){ int sum = 0; while(i<len && str[i]>='0' && str[i]<='9'){ sum *= 10; sum += str[i]-'0'; i++; } i--; num[row][++num[row][0]] = sum; } else if(str[i] == '<'){ if(str[i+1] == '='){ eql[row][num[row][0]] = true; i++; } else{ eql[row][num[row][0]] = false; } } }}bool Judge(){ for(int i=0; i<N; i++){ int fro; for(int j=1; j<=num[i][0]; j++){ if(j == 1){ if(num[i][j] == -1){ fro = alphval[alph[i][j]-'A']; } else{ fro = num[i][j]; } } else{ int beh; if(num[i][j] == -1){ beh = alphval[alph[i][j]-'A']; } else{ beh = num[i][j]; } if(eql[i][j-1]){ if(fro <= beh){ fro = beh; } else{ return false; } } else{ if(fro < beh){ fro = beh; } else{ return false; } } } } } return true;}int main(){ //freopen("in.txt", "r", stdin); while(scanf("%d", &N) == 1){ sset.clear(); for(int i=0; i<N; i++){ scanf("%s", str); Solve(i); } scanf("%d", &T); getchar(); for(int i=0; i<T; i++){ char ch; int tmp; for(int j=0; j<sset.size(); j++){ scanf("%c%d", &ch, &tmp); getchar(); alphval[ch-'A'] = tmp; } if(Judge()){ printf("Yes\n"); } else{ printf("No\n"); } } } return 0;}
阅读全文
0 0
- Constraint Checker hiho一下第176周
- hiho一下 第143周 hiho密码
- hiho一下 第141周
- hiho一下 第139周
- hiho一下第143周
- hiho一下 第145周
- hiho一下 第167周
- hiho一下 第175周
- hiho一下 第174周
- hiho一下第56周 高斯消元
- hiho一下 第113周 Fibonacci (dp)
- [hiho一下 第128周] 后缀自动机
- [hiho一下 第129周] 后缀自动机
- [hiho一下 第130周] 后缀自动机
- hiho一下 第140周 清理海报
- hiho一下 第139周 买零食
- hiho一下 第139周 买零食
- hiho一下 第139周 买零食
- Advanced Programming in UNIX Environment Episode 15
- springMVC架构图
- 分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择 分布式系统 消息系统
- 音乐播放
- 比较两个数据的大小
- Constraint Checker hiho一下第176周
- 如何使用OpenCV来锐化图像
- 2017.11.14 LeetCode
- 数据结构学习之整体二分&&bzoj2738矩阵乘法题目分析
- 简单介绍区块链技术
- Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.tdb_
- 自定义provider服务
- Mybatis基本配置、日志文件(sql语句)打印
- 使用SpringMvc跨服务器上传图片,Ajax异步刷新图片框显示图片功能请求不到后台,onChange事件没有激活的源码?