NKOJ——P1914——火车调度

时间限制 : 10000 MS 空间限制 : 65536 KB

  • 原题
    • 问题描述
    • 输入格式
    • 输出格式
    • 样例
      • 样例输入
      • 样例输出
  • 题解

原题

问题描述

某城市有一个火车站,如下图 所示,现有 n(n < =10000)节火车车厢,顺序编号为 1,2,3,…,n,按编号连续依次从 A 方向的铁轨驶入车站,从 B 方向铁轨驶出。一旦车厢进入车站就不能再回到 A 方向的铁轨上;在车站的门口有工人可以将车厢拖出车站,工人一次只能拖一节车厢,并且只能将车厢拖入B方向的铁轨。一旦车厢出了车站就不能再回到车站。车站一开始为空,最多能停放 10000 节车厢。
为了方便装货,调度员需要将车厢从新排列,问能否将车厢编号排列成A1,A2,…,An。也就是使车厢从B方向驶出的编号是A1,A2,…,An。如果能输出"yes",否则输出"no"。

NKOJ——P1914——火车调度_第1张图片

输入格式

第一行,一个整数n
第二行,n个用空格间隔的整数,表示出站时车厢编号要排列成的顺序A1,A2,…,An

输出格式

一行,一个单词"yes"或者"no"

样例

样例输入

样例输入1:
5
3 2 5 4 1
 
样例输入2:
5
3 1 5 4 2

样例输出

样例输出1:
yes
 
样例输出2:
no

题解

首先,肯定是用
然后while(n--)循环判断:

		cin>>e;
		for(;i<=e;i++)
			s.push(i);
		if(s.top()==e)
			s.pop();

如果栈的元素弹不出来了,卡了,那就no

		else if(s.top()>e)
		{
			cout<<"no";
			return 0;
		}
		else
			continue;

因为我有强迫症想要美观,加上一个else
NKOJ——P1914——火车调度_第2张图片
最后:

	cout<<"yes";
	return 0;

Accepted (100)
代码见链接。
完结撒花!

你可能感兴趣的:(c++,栈)