UVa 12504 - Updating a Dictionary
来源:互联网 发布:表格制作软件手机软件 编辑:程序博客网 时间:2024/06/10 04:28
感觉我又犯二了,各种if,else if,一会儿看看题解。
明天有个院的对抗赛,我总有一种我要坑的预感。。。既然明天比赛,今天争取早点睡吧。
#include<iostream>#include<set>#include<string>#include<map>#include<queue>#include<vector>#include<cctype>#define OLD_DIC old_dic_val.top().dic#define OLD_VAL old_dic_val.top().val#define NEW_DIC new_dic_val.top().dic#define NEW_VAL new_dic_val.top().valusing namespace std;struct dic_val { string dic, val;};struct cmp_dic { bool operator () (const dic_val &dic1, const dic_val &dic2) const { return dic1.dic > dic2.dic; }};string old_dic, new_dic;priority_queue<dic_val, vector<dic_val>, cmp_dic> old_dic_val, new_dic_val;void get_old_dic(string old_dic_w) { dic_val dic_w; if(old_dic_w.size() == 2) return ; for(int i = 0; old_dic_w[i] != '}'; i++) { if(isdigit(old_dic_w[i])) dic_w.val += old_dic_w[i]; if(isalpha(old_dic_w[i])) dic_w.dic += old_dic_w[i]; if(old_dic[i] == ','|| old_dic[i + 1] == '}') { old_dic_val.push(dic_w); dic_w.val.clear(); dic_w.dic.clear(); } }}void get_new_dic(string new_dic_w) { dic_val dic_w; if(new_dic_w.size() == 2) return ; for(int i = 0; new_dic_w[i] != '}'; i++) { if(isdigit(new_dic_w[i])) dic_w.val += new_dic_w[i]; if(isalpha(new_dic_w[i])) dic_w.dic += new_dic_w[i]; if(new_dic[i] == ','|| new_dic[i + 1] == '}') { new_dic_val.push(dic_w); dic_w.val.clear(); dic_w.dic.clear(); } }}int print(set<string> Set, char ch) { if(Set.empty()) return 0; int cnt = 0; for(set<string>::iterator it = Set.begin(); it != Set.end(); it++) { cnt ? cout << "," : cout << ch; cnt = 1; cout << *it; } cout << endl; return 1;}int main() { int n, cases = 0; cin >> n; while(n--) { int sign = 0; set<string> add_list, del_list, change_list; cin >> old_dic >> new_dic; get_old_dic(old_dic); get_new_dic(new_dic); while(!old_dic_val.empty()|| !new_dic_val.empty()) { if(!old_dic_val.empty()&& !new_dic_val.empty()) { if(OLD_DIC == NEW_DIC) { if(OLD_VAL == NEW_VAL) { old_dic_val.pop(); new_dic_val.pop(); } else { change_list.insert(OLD_DIC); old_dic_val.pop(); new_dic_val.pop(); } } else if(OLD_DIC < NEW_DIC) { del_list.insert(OLD_DIC); old_dic_val.pop(); } else { add_list.insert(NEW_DIC); new_dic_val.pop(); } } else if(old_dic_val.empty()&& !new_dic_val.empty()) { add_list.insert(NEW_DIC); new_dic_val.pop(); } else if(!old_dic_val.empty()&& new_dic_val.empty()) { del_list.insert(OLD_DIC); old_dic_val.pop(); } } sign += print(add_list, '+'); sign += print(del_list, '-'); sign += print(change_list, '*'); if(!sign) cout << "No changes" << endl; cout << endl; } return 0;}
0 0
- UVA - 12504 Updating a Dictionary
- UVa 12504 - Updating a Dictionary
- UVA - 12504 Updating a Dictionary
- Uva - 12504 - Updating a Dictionary
- UVA 12504 Updating a Dictionary
- *UVa 12504 - Updating a Dictionary
- UVA 12504-Updating a Dictionary
- UVa 12504 Updating a Dictionary
- uva 12504 Updating a Dictionary
- UVA 12504 Updating a Dictionary
- uva 12504 Updating a Dictionary
- UVa 12504 - Updating a Dictionary(数据处理)
- UVa 12504 Updating a Dictionary(更新字典)
- Uva 12504-Updating a Dictionary(STL, map)
- uva 12504 Updating a Dictionary(更新字典)
- 12504 - Updating a Dictionary
- 12504 - Updating a Dictionary
- 12504 - Updating a Dictionary
- struts zip打包多个文件并下载
- HDOJ Big Number 1018
- sgu121
- 研吧电源技术之新形势下电源的发展方向(1)
- start service失败的问题解决
- UVa 12504 - Updating a Dictionary
- 计蒜客 元素移除
- sgu161:Intuitionistic Logic
- size_type size_t
- 继承 组合 复合
- mongoose 返回值无法修改
- C#获取时间
- 最简单的C语言木马
- JAVA date timezone 的用法