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(栈的应用)的更多相关文章

  1. HDU1022 Train Problem I 栈的模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 栈的模拟,题目大意是已知元素次序, 判断出栈次序是否合理. 需要考虑到各种情况, 分类处理. 常 ...

  2. Train Problem I(栈)

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. train problem I (栈水题)

    杭电1002http://acm.hdu.edu.cn/showproblem.php?pid=1022 Train Problem I Time Limit: 2000/1000 MS (Java/ ...

  4. Hdu 1022 Train Problem I 栈

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. hdu1022 Train Problem I---模拟栈

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1022 题目大意: 车的进出站问题,先给出N个火车,再按序列一的方式进站,判断能否以序列二的方式出站,若 ...

  6. hdu Train Problem I(栈的简单应用)

    Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...

  7. Train Problem(栈的应用)

    Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of studen ...

  8. hdu1022 Train Problem I

    http://acm.hdu.edu.cn/showproblem.php?pid=1022 #include<iostream> #include<stdio.h> #inc ...

  9. Train Problem I--hdu1022(栈)

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  10. 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 ...

随机推荐

  1. SSCursor 处理大量数据

    使用游标的好处是不会将查询结果全部都放入内存中,避免了占用大量的内存,会从存储块中读取记录,并且一条一条的返回来 class DbConnection(object): def __init__(se ...

  2. CF894E Ralph and Mushrooms

    题目 一眼题. 缩点然后dp. 注意一下计算一条边经过无限次可以获得多少价值这个东西要用到平方和公式. \(\sum\limits_{i=1}^ni^2=\frac{i(i+1)(2i+1)}6\) ...

  3. CF1142B Lynyrd Skynyrd

    题目 有两种做法: 第一种是\(O(nlog\ n)\)的. 我们预处理两个数组: \(pre_i\)表示\(p\)中\(i\)前面的那个数是\(pre_i\). \(lst_i\)表示\(a\)中\ ...

  4. 小白学习django第三站-自定义过滤器及标签

    要使用自定义过滤器和标签,首先要设置好目录结构 现在项目目录下建立common的python包 再将common加入到setting.py中的INSTALLED_APP列表中 在common创建目录t ...

  5. Java Web开发技术教程入门-静态网页技术

        昨天了解了构建动态网站的几种技术:Servlet技术.JSP技术,ASP技术和ASP.NET技术以及PHP技术.昨天的精髓在于JSP技术的运行原理:通过用户请求JSP文件,首先检查JSP文件的 ...

  6. linux:文件/目录权限设置

    一.权限修改命令:     chmod [OPTION]... MODE[,MODE]... FILE...二.文件/目录MODE指定方式: 1).八进制(r=4,w=2,x=1) [root@pin ...

  7. 优雅的swiper实例

    swiper实例 <!DOCTYPE html> <html lang="en"> <head> <meta name="vie ...

  8. SAP发布wbservice,如果有权限管控的话,需要给这个webservice加权限

    1. PFCG床架角色 2.在角色菜单上,添加其他,选中Authorization Default Values for Services 如下图 3.选中发布的webservice 后保存,如下图: ...

  9. scp 远程文件复制命令

    scp 远程文件复制工具 1.命令功能 scp用户在不同linux主机间复制文件,他采用ssh协议保障复制的安全性.scp复制是全量完整复制,效率不高,使用与第一次复制,增量复制建议rsync命令. ...

  10. 开发规范总结-java代码

    java8新特性: 开发的时候适当用一些新特性的语法,可以使代码更简洁.譬如List根据某个属性转map.stream.函数式编程.lambda表达式 有一种场景:两个list一个转map 两个lis ...