就是查看出队序列合不合理罢了,只要和数组中的数一致按需出队即可。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000+10;
int a[maxn];
int n;
bool is_end() {
cin>>n;
return n==0? false : true;
}
int main() {
int k;
while (is_end()) {
cin>>k;
if (k==0) cout<<endl;
stack<int> sk;
while (k!=0) {
stack<int> sk;
a[1] = k;
for (int i=2;i<=n;i++) {
cin>>a[i];
}
int j = 1;
for (int i=1;i<=n;i++) {
sk.push(i);
while (!sk.empty()&&sk.top()==a[j]) {
sk.pop();
j++;
}
}
if (sk.empty()) cout<<"Yes\n";
else cout<<"No\n";
cin>>k;
if (k==0) cout<<endl;
}
}
return 0;
}

京公网安备 11010502036488号