火车进出站问题---栈

来源:互联网 发布:oracle数据库连接器 编辑:程序博客网 时间:2024/06/02 15:40

编号为1,2,…,n的n辆火车依次进站,给定一个n的排 列,判断是否是合法的出站顺序?
这里写图片描述

思路:先把出站顺序存入,用栈模拟进站的火车,按照出站的顺序,依次pop出来,判断:最后的出站数量能否达到n。

#include<cstdio>#include<string.h>#include<stack>using namespace std;const int MAXN = 1010;stack<int> s;int train[MAXN];int main(){    int N;    while(~scanf("%d",&N) && N)    {  while(scanf("%d",&train[1]) && train[1])        {            for(int i = 2; i <= N; i++)                scanf("%d",&train[i]);            int B = 1;            for(int i = 1; i <= N; i++)            {                s.push(i);  while(!s.empty() && s.top() == train[B])  {  s.pop(); B++; }}            if(B == N+1)                printf("Yes\n");            else                printf("No\n");            memset(train,0,sizeof(train));        }        printf("\n");    }    return 0;}
原创粉丝点击