UVA 11111 - Generalized Matrioshkas
2014-03-10 23:24
357 查看
这道题目很简单,题意也很好理解~用到了栈来做,跟括号匹配的问题属于同一类问题。
不同之处在于,在这里需要多判一步看是不是内层的toy的size大于外层的size,如果大于,则是失败的。
RE许多次的原因不在于数组小,也不在于stack的位置,也不在于eof的不使用。
而是在于自己忽略了一种极端的情况:如果一开始就给了一个正数——那么stack本来就是空的,再要求stack往外弹,就会使程序崩溃。
在这里还是得谢谢川哥,是他帮我指出了这一点。
另外还教了我清空stack的办法~:
希望自己也能多积累一些经验,可以像川哥一样敏锐的发现错误的原因所在。
不同之处在于,在这里需要多判一步看是不是内层的toy的size大于外层的size,如果大于,则是失败的。
RE许多次的原因不在于数组小,也不在于stack的位置,也不在于eof的不使用。
而是在于自己忽略了一种极端的情况:如果一开始就给了一个正数——那么stack本来就是空的,再要求stack往外弹,就会使程序崩溃。
在这里还是得谢谢川哥,是他帮我指出了这一点。
另外还教了我清空stack的办法~:
while(!k.empty()) k.pop();很简单,但我一直没用过。
希望自己也能多积累一些经验,可以像川哥一样敏锐的发现错误的原因所在。
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #include<stack> using namespace std; struct toy { int Size; int vol; }a[100000]; int main() { int temp; char ch; int t=0;int flag=0; while(scanf("%d%c",&temp,&ch)!=EOF) { a[t].Size=temp; a[t++].vol=temp; if(ch=='\n') { flag=0; stack<toy>k; int i; for(i=0;i<t;i++) { if(a[0].Size>0) { flag=1; break; } if(i!=0&&k.size()==0) { flag=1; break; } if(a[i].Size<0) { if(i==0) { k.push(a[i]); } else { k.top().vol-=a[i].Size; if(k.top().vol>=0) { flag=1; break; } k.push(a[i]); } } else if(a[i].Size>0) { int tt=k.top().Size; if(a[i].Size+tt!=0) { flag=1; break; } else { k.pop(); continue; } } } int ttt=k.size(); if(ttt!=0) flag=1; if(flag==1) printf(":-( Try again.\n"); else printf(":-) Matrioshka!\n"); t=0; } } return 0; }
相关文章推荐
- UVA 11111 一般XX
- uva 11111 Generalized Matrioshkas
- uva 11111
- UVA - 11111 Generalized Matrioshkas
- uva 11111 - Generalized Matrioshkas
- uva-11111 Generalized Matrioshkas
- UVA - 11111 Generalized Matrioshkas
- UVa 11111 一般Matrioshka 及 scanf 处理一行
- UVa 11111 - Generalized Matrioshkas
- uva 11111
- UVa 11111 Generalized Matrioshkas
- Generalized Matrioshkas UVA 11111
- UVA 11111 Generalized Matrioshkas
- UVa 11111 - Generalized Matrioshkas
- uva 11111
- UVA-11111 Generalized Matrioshkas
- UVa 11111 - Generalized Matrioshkas
- uva 11111 - Generalized Matrioshkas
- UVA11111套娃匹配题,注意字符串流使用简化代码
- uva 11111 - Generalized Matrioshkas