2016微软探星夏令营:#1341 : Constraint Checker
来源:互联网 发布:虚拟机ubuntu怎样重置 编辑:程序博客网 时间:2024/04/30 08:31
这一题思路比较简单,主要是字符串处理比较繁琐,源代码如下:
#include <iostream>#include <vector>#include <string>#include <unordered_set>#include <unordered_map>using namespace std;int main(void){int n, m;string str;vector<vector<string> > constraints;unordered_set<char> charMap;cin >> n;for(int i = 0; i < n; ++i){cin >> str;size_t pos = 0;vector<string> cons;while((pos = str.find("<=", pos)) != string::npos){str = str.replace(pos, 2, "^");}for(size_t i = 0; i < str.size();){string tmp = "";if(str[i] >= 'A' && str[i] <= 'Z'){charMap.insert(str[i]);tmp += str[i++];}else if(str[i] == '<' || str[i] == '^'){tmp += str[i++];}else{while(i < str.size() && str[i] >= '0' && str[i] <= '9')tmp += str[i++];}cons.emplace_back(tmp);}constraints.emplace_back(cons);}//checkcin >> m;for(int k = 0; k < m; ++k){int val;string key;unordered_map<string, int> valueTable;for(size_t i = 0; i < charMap.size(); ++i){cin >> key >> val;valueTable[key] = val;}bool isYes = true;for(size_t i = 0; i < constraints.size() && isYes; ++i){vector<string> &cons = constraints[i];for(size_t j = 0; j < cons.size() - 2 && isYes; j += 2){int a = (cons[j] >= "A" && cons[j] <= "Z") ? valueTable[cons[j]] : atoi(cons[j].c_str());int b = (cons[j+2] >= "A" && cons[j+2] <= "Z") ? valueTable[cons[j+2]] : atoi(cons[j+2].c_str());isYes = (cons[j+1] == "<") ? (a < b) : (a <= b); }}cout << (isYes ? "Yes" : "No") << endl;}return 0;}
另外,本题有点儿类似于表达式求值,用栈也可以求解,感兴趣的朋友可以自己试一下。
上述代码已经AC,能力有限,纰漏之处欢迎大家批评指正! 0 0
- 2016微软探星夏令营:#1341 : Constraint Checker
- 2016微软探星夏令营:#1341 : Constraint Checker
- Constraint Checker 2016微软探星夏令营在线技术笔试
- 2016微软探星夏令营在线技术笔试-#1341 : Constraint Checker
- [HihoCoder]#1341 : Constraint Checker
- 2016微软探星夏令营在线技术笔试
- 2016微软探星夏令营在线技术笔试题解(1)
- 2016微软探星夏令营在线技术笔试题解(2)
- 2016微软探星夏令营在线技术笔试题解(3)
- 2016微软探星夏令营在线技术笔试题解(4)
- 【hihocoder#1341】(微软探星夏令营在线技术笔试第一题)
- 2016微软探星夏令营在线技术笔试-#1342 : Full Binary Tree Picture
- Constraint Checker——hihoCoder176
- [2016 微软预科生计划-探星夏令营在线测试2] Give My Text Back(字符串处理)
- 【在线笔试题解题报告系列】微软在线笔试之 2016微软探星夏令营在线技术笔试(时间:2016.07.17)
- [hihoCoder 1187] Divisors (微软预科生计划-探星夏令营在线测试)
- hihocoder 1534 微软探星夏令营笔试A题 (STL)
- hihocoder 2017微软探星夏令营在线技术笔试 1534 Array Partition
- Redis cluster:redis集群架构说明
- iOS 认识CoreData-基础
- TextView设置边框,EditText常见问题
- Android安装报错,提示“reg”不是内部或外部命令,也不是可运行的程序或批处理文件
- 《设计模式之单例模式》
- 2016微软探星夏令营:#1341 : Constraint Checker
- GTest学习之旅第一步
- 在Android Studio 取消打包某一个Jar包
- 分享Android 蓝牙4.0(ble)开发的解决方案
- 在 Laravel 中使用 Slack 进行异常通知
- poj 2442 Sequence
- 一个人的旅行
- mysql数据库中文乱码问题,修改mysql字符集(Linux Windows)
- 如何从手机音频口获得电能