铁轨问题(超详细讲解)
问题描述:
某城市有一个火车站,铁轨铺设如图6-1所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择:A→C和C→B。
思路:从A站的车厢顺序都是从1~n从小到大的顺序的,而在B站中的顺序则是题目中自己输进去的顺序,我们要做的就是判断B站这个顺序有没有可能是从1-n这个顺序变化而来。
如果我们从c站来解决问题,那么问题就编的简单了很多。
根据题目对C站的描述,那么C站可以用一个栈来表示。
在c站中的车有三种情况:
1.从A站驶入C站之后就直接进入B站,即A==target[B]
2.从A站驶入C站之后就不出来了,直接留在C站里,即stack[++top]=A++;
3.从C站出来,即top && stack[top]==target[B](因为c站是一个栈,所以只能从最上面出来)
#include<stdio.h>
int main()
{const int MAXN=1000+10;int n,target[MAXN];while(scanf("%d",&n)==1){int stack[MAXN],top=0;int A=1,B=1;int i;for(i=1;i<=n;i++)scanf("%d",&target[i]);int ok=1;while(B<=n){if(A==target[B]) //1.车厢进去c站之后就直接出来 {A++;B++;}else if(top && stack[top]==target[B]) //2.从c站中驶入b站 { top--;B++;}else if(A<=n) //3.直接进入c站而不直接出来 {stack[++top]=A++;//printf("%d ",stack[top]); }else{ok=0;break;}}printf("%s\n",ok?"Yes":"No");}return 0;
}
铁轨问题(超详细讲解)相关推荐
- Python的零基础超详细讲解(第十三天)-Python的类与对象
基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...
- Python的零基础超详细讲解(第十二天)-Python函数及使用
基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...
- Python的零基础超详细讲解(第七天)-Python的数据的应用
往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...
- Python的零基础超详细讲解(第五天)-Python的运算符
往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...
- python高级语法装饰器_Python高级编程——装饰器Decorator超详细讲解上
Python高级编程--装饰器Decorator超详细讲解(上篇) 送你小心心记得关注我哦!! 进入正文 全文摘要 装饰器decorator,是python语言的重要特性,我们平时都会遇到,无论是面向 ...
- mybatis-plus超详细讲解
(6条消息) mybatis-plus超详细讲解_zdsg45的博客-CSDN博客_mybatis-plushttps://blog.csdn.net/zdsg45/article/details/1 ...
- stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)
stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解) 首先看看效果吧 手机端发送一个数据在OLED屏幕上显示 其实蓝牙通信就是个蓝牙转串口的过程,手机 ...
- Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】
Java基础-String类[超详细讲解] String类的特点 String在java.lang.String包中 1:特点 (1)String类型不能被继承,因为由final修饰 (2)Strin ...
- react的超详细讲解
create-react-app 项目目录 在HTML中使用react 1 2 3基础 React的注意事项 模拟的React 和 render React组件 函数组件 类组件 React 的数据源 ...
- 生存曲线 p值 python_超详细讲解生信SCI中的生存曲线作图,不看后悔系列
原标题:超详细讲解生信SCI中的生存曲线作图,不看后悔系列 在线及个性化精美Kaplan-Meier生存曲线的绘制 大家好,我是阿琛.俗话说,是骡子是马拉出来溜溜.在肿瘤研究中,一个基因的研究价值高不 ...
最新文章
- cadence中元件所在库
- 运维小菜鸟随笔Linux入门级操作命令(更新中。。。)
- 文献记录(part27)--A distance for belief functions of orderable set
- 中文 CentOS 攻略
- 2025年全球5G设备将达到14亿部 但4G仍占主导地位
- Oracle函数索引与普通索引
- Android开发之Canvas rotate方法释疑
- 帅炸了!乌克兰国防军队的系统账号和密码分别是 admin 和 123456!
- TSAP(7) : ARIMA模型
- M1 Mac YYKit 报错
- 计算机学院实习报告3000字(Java开发实习)--持续更新中,多个专业,以及版本
- 用大白话聊聊分布式系统
- 为什么程序员的工资那么高
- 更改服务器进bios修改启动项,bios设置修改开机启动项的方法
- 微信小程序实践——实验3视频播放小程序
- 二维码扫描枪为何在商超店铺中受到欢迎呢?
- 博主眼中的SEM竞价推广
- go基于腾讯云实现发送短信
- 记录一次迁移 wss WebSocket 的事故
- android同时预览多个监控,基于VLC的Android多路视频监控系统.pdf