HDU1022--Train Problem I(栈的应用)
Problem Description
As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world ^v^). But here comes a problem, there is only one railway where all the trains stop. So all the trains come in from one side and get out from the other side. For this problem, if train A gets into the railway first, and then train B gets into the railway before train A leaves, train A can\\\\\\\'t leave until train B leaves. The pictures below figure out the problem. Now the problem for you is, there are at most 9 trains in the station, all the trains has an ID(numbered from 1 to n), the trains get into the railway in an order O1, your task is to determine whether the trains can get out in an order O2.

Input
The input contains several test cases. Each test case consists of an integer, the number of trains, and two strings, the order of the trains come in:O1, and the order of the trains leave:O2. The input is terminated by the end of file. More details in the Sample Input.
Output
The output contains a string \\\\\\\"No.\\\\\\\" if you can\\\\\\\'t exchange O2 to O1, or you should output a line contains \\\\\\\"Yes.\\\\\\\", and then output your way in exchanging the order(you should output \\\\\\\"in\\\\\\\" for a train getting into the railway, and \\\\\\\"out\\\\\\\" for a train getting out of the railway). Print a line contains \\\\\\\"FINISH\\\\\\\" after each test case. More details in the Sample Output.
Sample Input
3 123 321
3 123 312
Sample Output
Yes.
in
in
in
out
out
out
FINISH
No.
FINISH Hint Hint
For the first Sample Input, we let train 1 get in, then train 2 and train 3.
So now train 3 is at the top of the railway, so train 3 can leave first, then train 2 and train 1.
In the second Sample input, we should let train 3 leave first, so we have to let train 1 get in, then train 2 and train 3.
Now we can let train 3 leave.
But after that we can\\\\\\\'t let train 1 leave before train 2, because train 2 is at the top of the railway at the moment.
So we output \\\\\\\"No.\\\\\\\".
Author
Ignatius.L
题意:
很有意思的一道题目
有一个站台C,只能FILO(先进后出),并且火车只能驶向B轨道,轨道A上的火车只能驶向C轨道
给出从A驶向C的顺序,以及从C驶向B的顺序,问这种顺序有可能吗?可能的话请输出方案
思路:
一开始想着在算法竞赛入门经典上看见过这道题目,只顾着回想思路了(尴尬的是忘记了。。。)
其实简单分析一下,题目其实就是问的在这种入栈顺序下,给出的出栈顺序有无可能,而每次出栈时,只能出栈顶元素。
设置标记f=0,出栈序列为O。模拟一下入栈顺序,当此时栈顶的元素等于等于O[f]时,出栈,f++,直至栈顶元素不等于O[f],停止出栈
最后,若栈中还有元素或者f!=n ,则此情况不成立
代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000003;
int s[MAXN];
char a[MAXN],b[MAXN];
bool path[MAXN];
int main()
{
int n;
while(cin>>n){
memset(path,-1,sizeof(path));
scanf("%s",a);
getchar();
scanf("%s",b);
int cou=-1;
int coub=0;
int coup=0;
for(int i=0;i<n;i++){
s[++cou]=a[i]-'0';
path[coup++]=1;
while(s[cou]==(b[coub]-'0')&&cou!=-1&&coub<n){
//cout<<11111111<<endl;
cou--;
coub++;
path[coup++]=0;
}
}
if(cou!=-1)cout<<"NO."<<endl;
else{
cout<<"Yes."<<endl;
for(int i=0;i<2*n;i++){
if(path[i])cout<<"in"<<endl;
else cout<<"out"<<endl;
}
}
cout<<"FINISH"<<endl;
}
}
HDU1022--Train Problem I(栈的应用)的更多相关文章
- HDU1022 Train Problem I 栈的模拟
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 栈的模拟,题目大意是已知元素次序, 判断出栈次序是否合理. 需要考虑到各种情况, 分类处理. 常 ...
- Train Problem I(栈)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- train problem I (栈水题)
杭电1002http://acm.hdu.edu.cn/showproblem.php?pid=1022 Train Problem I Time Limit: 2000/1000 MS (Java/ ...
- Hdu 1022 Train Problem I 栈
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu1022 Train Problem I---模拟栈
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1022 题目大意: 车的进出站问题,先给出N个火车,再按序列一的方式进站,判断能否以序列二的方式出站,若 ...
- hdu Train Problem I(栈的简单应用)
Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...
- Train Problem(栈的应用)
Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of studen ...
- hdu1022 Train Problem I
http://acm.hdu.edu.cn/showproblem.php?pid=1022 #include<iostream> #include<stdio.h> #inc ...
- Train Problem I--hdu1022(栈)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDU 1022.Train Problem I【栈的应用】【8月19】
Train Problem I Problem Description As the new term comes, the Ignatius Train Station is very busy n ...
随机推荐
- spark日志+hivesql
windows本地读取hive,需要在resource里面将集群中的hive-site.xml下载下来. <?xml version="1.0" encoding=" ...
- java.lang.StackOverflowError解决
在使用JPA的仓储repository进行查询时,经常用到findAllbyId的方法: repository.findAllbyId() 但如果像下面的代码,当list的size量太大的话,就会报栈 ...
- 一篇关于for循环的简单题练习,
package practice; public class Practice { public static void main(String[] args) { 7. * ** ...
- 苹果浏览器和ios中,时间字符串转换问题
背景:在开发PC端项目和小程序时,遇到过一个时间字符串转化问题,在苹果浏览器和ios微信客户端里,"2018-10-15 18:20" 以 字符"-"拼接的时间 ...
- ajax跨域jsonp —— javascript
目录 jsonp是什么 jsonp原理 原生js使用jsonp jquery使用jsonp jsonp是什么 jsonp作用:解决跨域问题 为什么有跨域问题? “同源策略限制了从同一个源加载的文档或脚 ...
- C语言面试相关知识点
1.关键字static的作用是什么? 有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这个函数被调用过程中维持其值不变 2)在模块内(但在函数体外),静态的变量可以被模块内所有函数访问,但 ...
- 日语能力测试N1、N2级听力必备核心词汇—头发篇
日语能力测试N1.N2级听力必备核心词汇—头发篇 要想在短时间内迅速提高日语听力能力的水平,除了每天练习(用2倍的速度)真题之外,掌握听力的核心词汇也是一个必要的好方法. 髪(かみ)--头发髪型(かみ ...
- Oracle 之 触发器
触发器是特定的事件出现的时候,自动隐式执行代码块,这个过程用户无法控制,用户只能控制触发的事件,触发后的操作,触发过程是自动执行的. 定义触发器: 1.名称 2.触发时间:是在执行事件之前(befor ...
- Linux日常之命令uniq
命令uniq 作用是过滤文件内容重复部分 需要注意的是,该命令只是对相邻的行进行比较,若两个相同的行不相邻,不会被过滤掉 选项 -c,在每行行首显示出该行出现的次数 -d,只显示出重复的行 -u,只显 ...
- (转) weblogic 12c忘记密码
weblogic安装后,很久不用,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码. 说明:%DOMAIN_HOME%:指WebLogic Server 域(Domain)目录 我的是: ...