刷题打卡 4 UVA-1596
来源:互联网 发布:转发文章赚钱软件 编辑:程序博客网 时间:2024/05/20 06:24
题目 8
Bug hunt UVA-1596
https://cn.vjudge.net/problem/UVA-1596
思路和代码参考:http://blog.csdn.net/wangjinhaowjh/article/details/50540489#comments感谢(dalao)(我都不会呀,看了好久看懂了点点)
#include<iostream>#include<cstring>#include<vector>#include<map>#include<cstdio>#include<cctype>#include<sstream>using namespace std;typedef long long ll;//将现有的数据类型起个新的别名。pair<char,ll>ha;//记录数组的下标及名称 map<char,ll>Count; //记录每个数组名的最大值map<pair<char,ll>,ll>num;//记录每个数组单元的值 string trans(string s){ //把中括号去掉char ss[10000];memset(ss,0,sizeof(ss));int i,j=0,len=s.length() ;for(i=0;i<s.length() ;i++){if(s[i]!='['&&s[i]!=']')ss[j++]=s[i];}ss[j]=0;string s1=ss;return s1;}ll get_count(string s){ //得到数组元素的值并判断int len=s.length() ,temp=0;string s1=s;for(int i=0;i<len;i++){char c=s[i];if(isalpha(c)) if(!Count.count(c)) return -1; //没有定义的数组,直接返回if(isalpha(c)) s[i]=' ';if(isdigit(c)){//判断字符ch是否为英文字母,若为英文字母,返回非0(小写字母为2,大写字母为1)。若不是字母,返回0。 temp=i;break;}}stringstream ss(s);//stringstream是 C++ 提供的另一个字串型的串流(stream)物件 主要是用在將一個字串分割ll x;ss>>x;for(int i=temp-1;i>=0;i--){char c=s1[i];ha.first =c;ha.second =x;if(!num.count(ha)) return -1;//count其功能是在序列中查找等于某个给定值的元素的个数x=num[ha];}return x;}int main(){string s;int i,j,k;vector<string>code;while(cin>>s&&s[0]!='.'){Count.clear() ;//clear清空字符串num.clear() ;code.clear() ;code.push_back(trans(s));int yes=1;while(cin>>s&&s[0]!='.')code.push_back(trans(s));int len=code.size() ;for(i=0;i<len;i++){k=code[i].find('=');if(k==std::string::npos ){string s1=code[i].substr(1);char c=code[i][0];ll x=get_count(s1);if(x==-1){cout<<i+1<<endl;yes=0;break;}Count[c]=x;}else{string s1=code[i].substr(1,k-1);string s2=code[i].substr(k+1);char c=code[i][0];ll x=get_count(s1),y=get_count(s2);if(!Count.count(c)||x==-1||y==-1||x>=Count[c] ){cout<<i+1<<endl;yes=0;break;}ha.first=c;ha.second=x;num[ha]=y;}} if(yes==1)cout<<"0\n";}return 0;}
————越努力,越幸运BYyingying
阅读全文
1 0
- 刷题打卡 4 UVA-1596
- 刷题打卡 8 uva514, uva 442,uva11988,uva12657
- 2016.7.13 刷题打卡
- 刷题打卡3 UVa230
- 刷题打卡 5 UVa210
- 刷题打卡 6 poj1222
- 刷题打卡1 poj1543 ,poj1006,poj1013
- 刷题打卡2 UVa1590,UVa508, UVa509
- vba基础打卡4
- 打卡
- 打卡
- 打卡
- 打卡
- 2016.7.4 打卡 KEEP ACCEPTED
- 刷题打卡 7 简单汉诺塔问题,N皇后问题,逆波兰表达式
- 2016.7.12 做题汇总! 打卡!
- 2014-12-4 bec复习打卡
- 打卡题 洛谷p1060开心的金明
- C#异步编程的使用
- 关联分析——FP-growth算法
- [Idea]Idea报错:请使用 -source 7 或更高版本以启用 diamond 运算符
- C++各个容器比较(vector,deque,list,set,map,queue,stack)
- log4j遇到的一些问题
- 刷题打卡 4 UVA-1596
- [Idea]IntelliJ IDEA :Error:(1, 1) java: 非法字符: '\ufeff'
- 问题 H: StarFarming
- Set 集合常用方法
- numpy之newaxis
- 【dp】HDU
- 8.12
- JavaScript语法 --> 碰壁反弹
- 获取两个字符串中最大的公共子串