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 }

 

posted @ 2014-06-16 23:54  Naturain  阅读(151)  评论(0编辑  收藏  举报