Uva--11111 (栈的应用)

2014-06-16 23:48:54

题意&思路:逗逗的题目,讲的是俄罗斯套娃,就是一个娃娃里套一个娃娃(小时候玩这货的时候可没想到是Russia的)。。这题是广义的,一个娃娃里可以套多个娃娃,然后给你一列信息,判断能否套成娃(QAQ!萌哭了),思路:开了两个栈,模拟一下就好。(TAT,最后漏掉判s.empty(),怒献n次WA)

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <string>
 4 #include <sstream>
 5 #include <cstring>
 6 #include <stack>
 7 #include <iostream>
 8 using namespace std;
 9 
10 int main(){
11     stack<int> s,smir;
12     string str;
13     int t;
14     while(getline(cin,str)){
15         if(str[0] == '\0')
16             continue;
17         while(!s.empty())
18             s.pop();
19         while(!smir.empty())
20             smir.pop();
21         istringstream sin(str);
22         int flag = 1;
23         while(sin >> t){
24             if(s.empty()){
25                 if(t < 0){
26                     s.push(t);
27                     smir.push(t);
28                 }
29                 else{
30                     flag = 0;
31                     break;
32                 }
33             }
34             else if(t > 0){
35                 if(t + smir.top() != 0){
36                     flag = 0;
37                     break;
38                 }
39                 s.pop();
40                 smir.pop();
41             }
42             else{
43                 int num = s.top() - t;
44                 if(num >= 0){
45                     flag = 0;
46                     break;
47                 }
48                 s.pop();
49                 s.push(num);
50                 s.push(t);
51                 smir.push(t);
52             }
53         }
54         if(flag && s.empty())
55             printf(":-) Matrioshka!\n");
56         else
57             printf(":-( Try again.\n");
58     }
59     return 0;
60 }

 

转载于:https://www.cnblogs.com/naturepengchen/articles/3791957.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值