UVA 11111-Generalized Matrioshkas
题目大意:大娃娃套小娃娃,-n与n搭配
解题思路:负数用栈存,正数看是否与栈顶数字相同并判断小娃娃大小和是否超过大娃娃
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stack>
using namespace std;
int main() {
stack<int> a;
stack<int> b;
int m;
char n;
int re = 1;
while((scanf("%d%c", &m, &n)) != EOF) {
if(m > 0) {
if(!a.empty() && a.top() + m == 0) {
a.pop();
b.pop();
if(!b.empty()) {
int k = b.top() + m;
b.pop();
b.push(k);
if(b.top() >= 0)
re = 0;
}
}
else
re = 0;
}
else {
a.push(m);
b.push(m);
}
if(n == '\n') {
if(!a.empty())
re = 0;
if(re == 0)
printf(":-( Try again.\n");
else
printf(":-) Matrioshka!\n");
re = 1;
for(;!a.empty();)
a.pop();
for(;!b.empty();)
b.pop();
}
}
return 0;
}