514 - Rails
题意:一个火车,一开是是有序的1-n车厢,给一个序列,问是否能通过轨道变换成该序列
思路:栈模拟即可
代码:
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
const int N = 1005;
int n, a[N];
int main() {
while (~scanf("%d", &n) && n) {
while (~scanf("%d", &a[0]) && a[0]) {
for (int i = 1; i < n; i++)
scanf("%d", &a[i]);
int now = 0;
stack<int> s;
for (int i = 1; i <= n; i++) {
s.push(i);
if (i > a[now]) break;
while (!s.empty() && s.top() == a[now]) {
s.pop();
now++;
}
}
if (s.empty()) printf("Yes\n");
else printf("No\n");
}
printf("\n");
}
return 0;
}