给出入栈顺序1,2,3,4,……n,问某个出栈序列是否合法
int main()
{
int n;
while (scanf("%d", &n) == 1 && n) {
int i;
int d[10000];
int k, x;
while (scanf("%d", &x) == 1 && x) {
d[0] = x;
for (i = 1; i < n; ++i)
scanf("%d", &d[i]);
stack<int> s;
int index = 1;
for (i = 0; i < n; ++i) {
if ((!s.empty()) && d[i] == s.top()) {
s.pop();
} else if ((!s.empty()) && d[i] != s.top()) {
if (d[i] == index) {
++index;
} else {
--i;
if (index > n) break;
s.push(index);
++index;
}
} else if (s.empty()) {
if (index > n) break;
s.push(index);
++index;
--i;
}
}
if (i == n) printf("Yes\n");
else printf("No\n");
}
printf("\n");
}
return 0;
}