铁轨(UVa 514)

经典算法,铁轨问题
关于数据结构中栈的应用,
题目:

PopPush城市有一座著名的火车站。这个国家到处都是丘陵。而这个火车站是建于上一个世纪。不幸的是,那时的资金有限。所以只能建立起一条路面铁轨。而且,这导致这个火车站在同一个时刻只能一个轨道投入使用,因为它缺少空间,当地的惯例是每一列火车从A方向驶向B方向时候,会用某种方式将车厢重组。假设火车将要到达A方向,拥有N个车厢(N<=1000),这些车厢按照递增顺序标记为1到N。负责从组车厢的领导,必须知道是否能从组车厢让它驶出B,而这个重组的序列就是a1\a2\a3…aN.帮组他并且写一个程序来判断是否可能按照所要求的车厢顺序。你可以假设,单个的车厢可以从列车上分离出来,在他们进入站台之前。并且他们可以自由移动,知道它们上了B轨道。你也可以假设在任意时候站台可以放下无数的车厢。但是只要一个车厢进入站台,它就不能返回A轨道,同时如果它离开了站台驶向B轨道,它就不能返回站台。

所以根据题目,我们总结出一下重要的信息:
进车站的顺序是:1,2,3,4…N (N <= 1000)
出车站的循序为:a1, a2, a3, a4…an(n = =N)
根据以上的信息我们写处了以下的代码:

#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;const int MAX = 1000 + 10;int target[MAX], n;  // target为目标车厢的顺序int main() {while (scanf("%d", &n) != EOF && n >= 0) { //输入火车数目for (int i = 1; i <= n; i++)cin >> target[i];stack <int> s;int ok = 1;  //用来标记输入火车车厢的顺序是否能够正常出站int A = 1, B = 1;while (B <= n) {if (A == target[B]) { // 进站的火车和出站的火车为同一辆A++;B++;} else if (!s.empty() && target[B] == s.top()) { B++; // 如果不是同一辆和栈中的车厢进行比较s.pop();} else if (A <= n) {s.push(A++);// A号车厢如果没有被匹配到,A号车厢进栈s} else {ok = 0; // 进火车站的车厢已经没有,但是仍然不匹配目标序列,ok = 0, 自定义顺序不能正常出站break;}}cout << (ok ? "yes" : "no") << endl;}
}

铁轨(UVa 514) 经典数据结构算法,铁轨问题相关推荐

  1. 例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)

    栈应用 例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514) 错解 1.每次要把栈清空 2.不能用空的栈(栈顶)去比较 #include<iostream&g ...

  2. 【数据结构与算法】多种语言(VB、C、C#、JavaScript)系列数据结构算法经典案例教程合集目录

    文章目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之<数据结构与算法> 3. 专栏目录 [经典回放]多种语言系列数据结构 ...

  3. 精选微软等公司数据结构+算法经典面试100题[1-80题]

    原文转自:http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html 精选微软等数据结构+算法面试100 ...

  4. apriori算法c++实现_经典数据结构与算法(四):Python/C/C ++实现队列类型双端队列数据结构...

    前期文章点击这里: 经典数据结构与算法(一):Python/C/C ++实现堆栈和队列 双端队列或双端队列是一种队列,其中可以从前面或后面执行元素的插入和删除.因此,它不遵循FIFO规则(先进先出). ...

  5. 20个经典数据结构与算法,300多幅算法手绘图解,带你领略算法之美

    一些经典的数据结构和算法图书,偏重理论,读者学起来可能感觉比较枯燥.一些趣谈类的数据结构和算法图书,虽然容易读懂,但往往内容不够全面.另外,很多数据结构和算法图书缺少真实的开发场景,读者很难将理论和实 ...

  6. 数据结构十大经典排序算法--Python

    十大经典排序算法 (java实现看这个)https://program.blog.csdn.net/article/details/83785159 名词解释: 1.冒泡排序 2.选择排序 3.插入排 ...

  7. Uva 514 Rails

    原文地址 Uva 514 Rails 铁轨 PopPush城市有一座著名的火车站.这个国家到处都是丘陵.而这个火车站是建于上一个世纪.不幸的是,那时的资金有限.所以只能建立起一条路面铁轨.而且,这导致 ...

  8. 十种经典排序算法精粹(c语言版本)

    下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...

  9. 十大经典排序算法动画与解析,看我就够了

    作者 | 程序员小吴 转载自五分钟学算法(ID: CXYxiaowu) 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序.内部排序是数据记录在内存中进行 ...

最新文章

  1. .Net Core 环境安装
  2. bat 实现批量备份文件
  3. 近五年计算机网络技术的发展,计算机网络技术的近期发展
  4. MyBatis运行原理(三)接口式编程及创建代理对象原理分析
  5. 工作58:element三级列表的问题
  6. python基础--格式化输出
  7. Linux服务器编程 用SIGURG检测带外数据是否到达
  8. C语言 · 数组查找及替换
  9. java key value 数据类型_JAVA面试锦囊(一)
  10. 38. Element cloneNode() 方法
  11. 汇编程序16位带符号变量计算
  12. Android:Fragment官方文档
  13. 俄数学天才破解庞加莱猜想拒领百万奖金
  14. CRS-0215: Could not start resource 'ora.rac.rac2.inst'.
  15. 全面了解风控决策引擎
  16. 2022年河南省焊工高级技师理论知识模拟试题及答案
  17. 又一重量级国字头赛事!中国大学生计算机设计大赛全面启动
  18. 打印两个字符串的公共字符
  19. mysql函数LOCATE、POSITION和INSTR
  20. 做软件的和搞硬件的,谁更优越?程序员:感觉搞硬件的真厉害,年龄越大越吃香,软件是吃青春饭...

热门文章

  1. 常见的字符串复制函数
  2. “机器学习”三重门_“中庸之道”趋若人(深度学习入门系列之四)
  3. 程序员的成长故事之 我的Borland五年
  4. 我曾经七次鄙视自己的灵魂【卡里·纪伯伦】
  5. python3图像加高斯噪声
  6. Linux网络编程-很全面
  7. UML是什么?常用的几种图有哪些?
  8. GPT-4要来了?传言:先进到与人类无异
  9. 那些成功学和鸡汤文没有告诉你的
  10. Dockerfile构建新镜像--网易蜂巢--RHEL7.2