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 }