问题描述:
某城市有一个火车站,铁轨铺设如图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;
}

铁轨问题(超详细讲解)相关推荐

  1. Python的零基础超详细讲解(第十三天)-Python的类与对象

    基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...

  2. Python的零基础超详细讲解(第十二天)-Python函数及使用

    基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...

  3. Python的零基础超详细讲解(第七天)-Python的数据的应用

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  4. Python的零基础超详细讲解(第五天)-Python的运算符

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  5. python高级语法装饰器_Python高级编程——装饰器Decorator超详细讲解上

    Python高级编程--装饰器Decorator超详细讲解(上篇) 送你小心心记得关注我哦!! 进入正文 全文摘要 装饰器decorator,是python语言的重要特性,我们平时都会遇到,无论是面向 ...

  6. mybatis-plus超详细讲解

    (6条消息) mybatis-plus超详细讲解_zdsg45的博客-CSDN博客_mybatis-plushttps://blog.csdn.net/zdsg45/article/details/1 ...

  7. stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)

    stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解) 首先看看效果吧 手机端发送一个数据在OLED屏幕上显示 其实蓝牙通信就是个蓝牙转串口的过程,手机 ...

  8. Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】

    Java基础-String类[超详细讲解] String类的特点 String在java.lang.String包中 1:特点 (1)String类型不能被继承,因为由final修饰 (2)Strin ...

  9. react的超详细讲解

    create-react-app 项目目录 在HTML中使用react 1 2 3基础 React的注意事项 模拟的React 和 render React组件 函数组件 类组件 React 的数据源 ...

  10. 生存曲线 p值 python_超详细讲解生信SCI中的生存曲线作图,不看后悔系列

    原标题:超详细讲解生信SCI中的生存曲线作图,不看后悔系列 在线及个性化精美Kaplan-Meier生存曲线的绘制 大家好,我是阿琛.俗话说,是骡子是马拉出来溜溜.在肿瘤研究中,一个基因的研究价值高不 ...

最新文章

  1. cadence中元件所在库
  2. 运维小菜鸟随笔Linux入门级操作命令(更新中。。。)
  3. 文献记录(part27)--A distance for belief functions of orderable set
  4. 中文 CentOS 攻略
  5. 2025年全球5G设备将达到14亿部 但4G仍占主导地位
  6. Oracle函数索引与普通索引
  7. Android开发之Canvas rotate方法释疑
  8. 帅炸了!乌克兰国防军队的系统账号和密码分别是 admin 和 123456!
  9. TSAP(7) : ARIMA模型
  10. M1 Mac YYKit 报错
  11. 计算机学院实习报告3000字(Java开发实习)--持续更新中,多个专业,以及版本
  12. 用大白话聊聊分布式系统
  13. 为什么程序员的工资那么高
  14. 更改服务器进bios修改启动项,bios设置修改开机启动项的方法
  15. 微信小程序实践——实验3视频播放小程序
  16. 二维码扫描枪为何在商超店铺中受到欢迎呢?
  17. 博主眼中的SEM竞价推广
  18. go基于腾讯云实现发送短信
  19. 记录一次迁移 wss WebSocket 的事故
  20. android同时预览多个监控,基于VLC的Android多路视频监控系统.pdf

热门文章

  1. SpringRetry重试机制
  2. 怎么用计算机编写圆的面积,圆的面积教学反思八篇
  3. C语言中字符串相关的拷贝函数
  4. SOS评测:Quested V3110 三分频有源监听音箱
  5. python的四大算法及实例
  6. 计算机等级考试电子邮件的保存,计算机基础知识电子邮件使用技巧集锦(二)
  7. Java使用poi导出数据到excel(包括xls和xlsx两种格式)并通过浏览器下载
  8. office2016更换密钥的方法
  9. JavaScript hoisting(变量提升)学习总结
  10. Java互联网架构学习之page分页