题意: 给出火车出站序列,问顺序是否合理,就是判断出栈合理不
算法:模拟栈
1.开辟一个数组存储出栈序列a[..];
2.开辟一个栈 stack<int>s,按顺序存储当前比a[i]小的车厢
3.如果a[i=0 -> n] == j = 0 ->..说明车厢直接出栈
4.如果3不成立,说明下一车厢有可能大于,有可能小于当前车厢编号
把小于当前标号都进s栈,j++,执行3
5.判断s栈栈顶编号是否等于a【i】,等于出栈i++
#include <iostream>
#include <stack>
using namespace std;
int a[1005];
int main()
{
stack <int>s;
int i,j,n;
bool flag;
while(cin>>n,n != 0)
{
while(cin>>a[0],a[0] != 0)
{
for(i = 1; i < n; i++)
{
cin>>a[i];
}
while(!s.empty())
s.pop();
i = 0;
j = 1;
flag = true;
while(i < n)
{
if(a[i] == j)//是否等于下一个车厢直接出栈
{
i++;
j++;
}
else
{
if(!s.empty() && s.top() == a[i