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. java学习笔记 - 线程池(一)

    线程池(Thread Pool):把一个或多个线程通过统一的方式进行调度和重复使用的技术,避免了因为线程过多而带来使用上的开销 优点:(面试题)可重复使用已有线程,避免对象创建.消亡和过度切换的性能开 ...

  2. spring + redis 实例(一)

    这一篇主要是redis操作工具类以及基本配置文本储存 首先我们需要定义一个redisUtil去操作底层redis数据库: package com.lcc.cache.redis; import jav ...

  3. python 9*9乘法口诀 猜数字游戏

  4. Django 前端通过json 取出后端数据

    Django 前端通过json 取出后端数据 前端通过json 取出后端数据 步骤1:后台数据通过 JSON 序列化成字符串a 注意:1.json是1个字符串 ​ 2.通过json.dumps('xx ...

  5. linux:RAID(磁盘阵列)笔记

    RAID磁盘阵列简述:     RAID0(条带): 把多个同样大小的磁盘串联起来当做一个磁盘来用.         优点:读写速度快.         缺点:数据容易丢失(没有容错能力).     ...

  6. JavaSE--关键字

    关键字 1.static 属于成员修饰符,被静态修饰符修饰的成员要使用类名直接调用,该成员优先于对象存在,属于类且被所有实例化对象共享,静态成员随着类的加载而加载. 访问权限:静态成员优先于对象加载致 ...

  7. RabbitMQ入门教程(六):路由选择Routing

    原文:RabbitMQ入门教程(六):路由选择Routing 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog. ...

  8. 剑指offer 数字翻译成字符串

    0 -> 'a', 1->'b', ..., 11 -> 'l', ..., 25->'z'. 计算一个数有多少种不同的翻译方法. 分析:记f[i]表示从第i位起的不同翻译数目 ...

  9. HTTP常用状态码详解

    HTTP状态码: HTTP定义遵循一条规则:所有状态码的第一个数字代表了响应的状态.1表示消息:2表示成功:3表示重定向:4表示请求错误:5.6表示服务器错误.如下图: 1xx: 这一类型的状态码,代 ...

  10. 字符串的 Base64 加密和解密

    base64加密: FORM encode_base64 USING p_business “字符串string CHANGING p_base64. DATA l_xstring TYPE xstr ...