时间:2020.x.x
题意:注意 题目给出的顺序是出栈顺序
1.我门这道题其实就是要判断,出栈顺序是否合理?
2.中间站看作是一个stack (现进后出 后进先出的特点)
3.他强调车厢分裂 是想要告诉我们 一辆车可以立刻进立刻出,可一旦进入之后不出来 就要等到在栈位置中的上一辆车出去才可以出去
4.因为这个上面这个特点,所以才会有两个正确的出栈顺序12345(每一辆车立刻进了立刻出)和654321(所有车不出等到最后一起出)
5.特别强调:车的入栈顺序 永远都是123456…n
6.其次呢 stack的基本操作:pop pushback empty
7.最后呢 注意输入输出问题
感谢大佬提供的思路
https://blog.csdn.net/su20145104009/article/details/51397833
#include<iostream>
#include<stack>
const int N = 1010;
int n;
int a[N];
using namespace std;
int main()
{
while (scanf("%d", &n) && n != 0)
{
while (true)
{
int k; scanf("%d", &k);
if (k == 0)break;
else a[0] = k;
for (int i = 1; i < n; i++)
{
scanf("%d", &a[i]);
}
int x = 0;
stack<int>s;
for (int i = 0; i < n; i++)
{
s.push(i + 1);
while (!s.empty() && s.top() == a[x])
{
s.pop();
x++;
}
}
if (x == n)printf("Yes\n");
else printf("No\n");
}
printf("\n");//也同时意味着进入下一个关于n辆车出栈顺序的测试
}
printf("\n");
}