栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

车站铁轨c++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

车站铁轨c++

题目描述
有 n节车厢从 A 方向驶入车站,按进站顺序编号为1…n 。

你的任务是让他们按照某中特定的顺序进入 B 方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站 C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入 C 的车厢必须按照相反的顺序驶出 C。对于每个车厢,一旦从 A 移入 C,就不能再回到 A 了;一旦从 C 移入 B,就不能回到 C 了。换句话说,在任意时刻,只有两种选择:A->C 和 C->B。

现在需要你写一个程序,判断给定的 B 方向驶出车站的车箱顺序是否可行,若不可行输出 ‘no’;若可行则输出 ‘yes’,并输出要能得到这个出站顺序,中转站 C 至少需要几个存放车厢的位置。

输入格式

第 1 行一个整数 n,表示有 n节车厢;
第 2 行 n个整数,是 1…n 的排列,表示 B 方向驶出的车厢顺序。

输出格式

若 B 方向出站车厢顺序不可行输出 “no”,若可行,则输出 “yes”,并在第二行输出中转站至少要提供车厢位置数。

样例
输入样例
5
1 2 3 4 5
输出样例
yes
1
数据范围与提示
n<10000

#include
using namespace std;
int main(){
	freopen("B.in","r",stdin);
	freopen("B.out","w",stdout);
	int n,num[10000],index=0,maxSize=0;
	stack stk;
	cin>>n;
	for(int i=0;i>num[i];
	for(int i=0;i
		stk.push(i+1);
		maxSize=max(maxSize,(int)stk.size());
		while(!stk.empty()&&stk.top()==num[index]){
			stk.pop();
			index++;
		}
	}
	if(stk.empty()){
		cout<<"yesn"<
		cout<<"no";
	}
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951831.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号