您的位置:首页 > 移动开发 > IOS开发

UVa 11111 - Generalized Matrioshkas

2016-03-16 18:55 417 查看
題目:俄羅斯套娃,判斷序列的合法性。

分析:數據結構,棧。利用棧處理數據,設置一個變量存儲當前層的總值,判斷是否裝得下。

            如果是負數,進棧,計數當前內部綜合為0;

            如果是正數,出棧,比較對應棧頂和當前元素是否相同,以及內部元素是否超過外層大小;

說明:注意結束時判斷隊列是否為空。

#include <cstring>
#include <cstdio>

int value[10001];
int stack[10001];
int total[10001];

int main()
{
char ch;
while (~scanf("%d%c",&value[1],&ch)) {
int count = 2;
while (ch != '\n') {
scanf("%d%c",&value[count ++],&ch);
}

int matrioshka = 1, top = 0;
for (int i = 1; i < count; ++ i) {
if (value[i] < 0) {
top = top+1;
total[top] = 0;
stack[top] = -value[i];
}else {
if (top <= 0 || stack[top] != value[i] || total[top] >= value[i]) {
matrioshka = 0;
break;
}
total[-- top] += value[i];
}
}

if (matrioshka == 1 && top == 0) {
printf(":-) Matrioshka!\n");
}else{
printf(":-( Try again.\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: