https://cn.vjudge.net/problem/UVA-514
分析:题目为栈的先进后出的特性。本题为栈的模拟题。申请一个容器栈来代表车站。一个一个输入出列车厢,当栈顶元素(即要出列的车厢)等于输入车厢时,出栈。如果不相等或者为空栈从1累加进栈直到与输入相等。最后栈空则为Yes。
要注意每次要清空栈,没有clear函数,只能pop一个一个清理。
代码:
#include <bits/stdc++.h>
using namespace std;
stack<int> stack1;
int main() {
freopen("i.txt", "r", stdin);
int n,m;
while(cin >> n && n) {
bool flag1 = true;
while(true) {
while(!stack1.empty()) stack1.pop();
for (int i = 0, j = 1; i < n; i++) {
cin >> m;
while(stack1.empty()||(stack1.top()!=m&&j<=n)) stack1.push(j++);
if(stack1.top()==m) stack1.pop();
if (!m) {
cout << endl;
flag1 = false;
break;
}
}
if(!flag1) break;
if(stack1.empty()) cout << "Yes" << endl;
else cout << "No" << endl;
}
}
return 0;
}