题目描述

火车站只有一条铁路,所有的火车都停在那里。所以所有的火车都是从一边进站,从另一边出站。如果A列先进入铁路,然后B列在A列离开之前进入铁路,那么A列在B列离开之前不能离开。下图说明了问题所在。车站里最多有9列火车,所有的火车都有一个ID(编号从1到N),火车按照O1的顺序进入火车,火车是否可以按照O2的顺序驶出。

输入

输入包含几个测试用例。

每个测试用例由一个整数(列车数)和两个字符串组成。两个字符串分别为列车入站顺序和列车出站顺序。

输出

如果不能按照指定顺序出站,输出“No”。

如果可以,输出“Yes”,然后输出出入站顺序(对于进入铁路的列车,应输出“in”,对于出铁路的列车,应输出“out”)。在每个测试用例之后打印一行包含“FINISH”。

输入样例1

3
3 123 321 
3 abc cab
3 123 123

输出样例1

Yes
in
in
in
out
out
out
FINISH
No
FINISH
Yes
in
out
in
out
in
out
FINISH

#include<iostream>
#include<stack>
#include<vector>//类似于数组,比数组好的是,不需要初始化
#include<cstring>
using namespace std;int main() {int t;int len;string inword,outword;//进来的和出去的字符cin >> t;while (t--) {cin >> len >> inword >> outword;stack<char>s;vector<string>show;//显示输出样例in out,也可以选择用stack,但是要正序输出,需要两个堆栈,所以考虑用vectorint p1 = 0, p2 = 0;//标志位,遍历in和out的wordwhile (p2 != len) {//只要p2没有遍历到长度,就是没有完全出完while (p1 < len && inword[p1] != outword[p2]) {//没有完全入完,并且进来的和出去的顺序不一致,就只能进入s.push(inword[p1++]);//把当前位加入s里面show.push_back("in");//并告知容器,此时为进入}if (p1 == len) {//走到了len,说明p1+++++到了len,竟然不是因为in=out跳出的循环,说明没救了!不可能相等。break;}if (inword[p1] == outword[p2]) {//刚进来就能出去,跳出上面一个while;一般情况下都能走到这一步。p1++;p2++;//比较他们的下一位show.push_back("in");show.push_back("out");//说明他们来过且出去了}while (!s.empty() && s.top() == outword[p2]) {//当栈里面还有火车,并且栈顶就是目标要出去的show.push_back("out");//让他出去s.pop();//栈指向下一位p2++;//p2也指向下一个}}if (s.empty() && p2 == len) {//栈内的火车都出去了,并且走到了最后一个要出栈的位置cout << "Yes" << endl;//说明此时出栈成功for (int i = 0; i < show.size(); i++) {cout << show[i] << endl;//输出in,out}}else {cout << "No" << endl;}cout << "FINISH" << endl;}
}

火车站(stack)相关推荐

  1. B: 火车站(stack)

    题目描述 火车站只有一条铁路,所有的火车都停在那里.所以所有的火车都是从一边进站,从另一边出站.如果A列先进入铁路,然后B列在A列离开之前进入铁路,那么A列在B列离开之前不能离开.下图说明了问题所在. ...

  2. 1880: wjw的火车站(栈)

    1880: wjw的火车站 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 140 Solved: 72 [Submit][Status][Web Boa ...

  3. (stack栈)rails

    题目: 某城市有一个火车站,铁轨铺设如图所示,有n节车厢从A方向驶入车站,按进站顺序编号为1至n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站.为了重组车厢,你可以借助中转站 ...

  4. HDU 1022 Train Problem I stack 基础题

    题意: 有一个火车站,只有一个口同时用于进入和出去,但不能有2辆或以上同时进出. 给出一个n代表有n辆火车(n<=9),编号分别为1到n. 然后给出2个序列,分别代表火车进站的顺序,火车出站的顺 ...

  5. 题目描述: 某城市有一个火车站,铁轨铺设如图所示。 有n节车厢从A方向驶入车站,按进站顺序编号1~n。 现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站。 为了重组车厢,可以借助中转站C。

    题目描述: 某城市有一个火车站,铁轨铺设如图所示. 有n节车厢从A方向驶入车站,按进站顺序编号1-n. 现让这些火车按照某种特定的顺序进入B方向的铁轨并驶出车站. 为了重组车厢,可以借助中转站C. C ...

  6. 车厢调度(train.cpp) 问题描述       有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有n节

    车厢调度(train.cpp) [问题描述] 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n<=1000),分别按照顺序 ...

  7. 数据结构:栈(stack容器)使用详解

    栈(stack容器)使用详解 一.栈的基本概念 1. 栈的基本定义 2.栈的相关概念 3.栈的常用操作 二.栈的操作应用 UVA514 铁轨 Rails 题目描述 输入格式 输出格式 题目翻译 题目分 ...

  8. Java多线程案例:模拟12306火车站售票系统

    Java多线程案例:模拟12306火车站售票系统 该系统一共涉及到3个类: 车票(Ticket) 12306系统(System12306) 售票窗口(Window) 车票类,涉及三个属性: 起始站 终 ...

  9. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

最新文章

  1. conda 装tensorboardx_【工欲善其事】TensorboardX的使用
  2. SERVICE问题解决方法
  3. bootstrap 表格不用tr td如何写_Pandas还能用来写爬虫?
  4. Java中的ThreadLocal的使用--学习笔记
  5. Linux 系统应用编程——网络编程(基础篇)
  6. 《Cracking the Coding Interview》——第6章:智力题——题目4
  7. 【博客项目】—用户删除功能(十二)
  8. 21.卷1(套接字联网API)---多播
  9. 关于静态事件 static event 的二三事
  10. python编写agent_python实现Agent守护进程
  11. 基于PCA的ORL人脸库特征抽取
  12. 如何制作媲美memz的炫酷特效恶搞程序
  13. C2. Skyscrapers (hard version)
  14. javascript:void(0)的作用
  15. CPU的主频/核心数
  16. 我的世界java版变形模组下载_我的世界变形模组
  17. spring(春天)
  18. 【CS231n】五、卷积神经网络简介CNN学习笔记
  19. 关于PTA题目集1-3的总结
  20. ios-block-对象与对象之间的解偶合

热门文章

  1. android 图片浏览器 布局,Android实现网络图片浏览器
  2. 2022长城杯Reverse-baby_reWP
  3. MATLAB实现EMD分解及希尔伯特谱分析
  4. sql 语句NVL()用法
  5. 2018年中国规模以上工业企业利润增长10.3%
  6. 《Towards Viewpoint Invariant 3D Human Pose Estimation》--深度图领域人体姿态估计的CNN算法
  7. Linux 拷贝文件:cp 命令
  8. python将想要打印的数据输出到txt文件中,打印省略号里面的内容
  9. pnpm_什么是pnpm?
  10. HCIP(华为高级网络安全工程师)(第一天)(HCIA知识复习)