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

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

思路:

栈的简单应用,输入为一个数n 和两个长度为 n 的字符串,第一个为入站序列 O1,第二个为出站序列 O2,我们只需要判断根据入站序列是否能得到出站序列,如果能救输入可能的出站序列,否则输出NO。

可以知道如果两个序列吻合,进出站顺序唯一,所以就在进站的同时判断能否出站,能则出站,否则继续进站,遍历。。

代码:

#include<iostream>
#include<string.h>
#include<stack>
using namespace std;
int main()
{
int n, i, j, k, flag[50];
char s1[15], s2[15];
stack <char> s;
while(cin>>n>>s1>>s2)
{
while(!s.empty()) //清空栈
s.pop();
memset(flag,-1,sizeof(flag));
j = k = 0;
for(i = 0; i < n; i++)
{
s.push(s1[i]); // 进栈
flag[k++] = 1;// 进栈为1,in
while(!s.empty() && s.top() == s2[j]) //出栈:栈为空或者栈顶元素与出
////站指针所在位置相等
{
flag[k++] = 0;//出栈为0 out
s.pop();
j++;
}
}
if(j == n) //如果 j = n 说明出栈完毕。
{
cout<<"Yes."<<endl;
for(i = 0; i < k; i++)
{
if(flag[i])
cout<<"in"<<endl;
else
cout<<"out"<<endl;
}
}
else
cout<<"No."<<endl;
cout<<"FINISH"<<endl;
}
return 0;
}


hdu Train Problem I(栈的简单应用)的更多相关文章

  1. HDU Train Problem I (STL_栈)

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

  2. Hdu 1022 Train Problem I 栈

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

  3. train problem I (栈水题)

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

  4. Train Problem I(栈)

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

  5. HDU Train Problem I 1022 栈模拟

    题目大意: 给你一个n 代表有n列 火车,  第一个给你的一个字符串 代表即将进入到轨道上火车的编号顺序, 第二个字符串代表的是 火车出来之后到顺序, 分析一下就知道这,这个问题就是栈, 先进后出吗, ...

  6. Train Problem(栈的应用)

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

  7. hdu Train Problem I

    这道题是道简单的栈模拟题,只要按照真实情况用栈进行模拟即可: #include<stdio.h> #include<string.h> #include<stack> ...

  8. HDU1022 Train Problem I 栈的模拟

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

  9. HDU 1702 队列与栈的简单运用http://acm.hdu.edu.cn/showproblem.php?pid=1702

    #include<stdio.h> #include<string.h> #include<queue> #include<stack> #define ...

随机推荐

  1. asp.mvc 插件式框架

    参考文档: http://blog.csdn.net/bitfan/article/details/17260775 http://www.cnblogs.com/Mainz/archive/2012 ...

  2. EJB 总结学习(1)

    总结1: 以下面这行代码为例: PersonDaoBeanRemote pdb = (PersonDaoBeanRemote)ctx.lookup("PersonDaoBean/remote ...

  3. HW4.15

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  4. 操作12864(ST7920控制器)

    引脚部分查看中文的12864介绍,下面这些可以在ST7920的英文数据手册里查到. Function Description 部分介绍工作方式.存储器.操作方法.Instructions 部分介绍指令 ...

  5. ln命令

    图形化界面创建ln 命令行界面创建ln 命令行界面创建ln 后续,更新

  6. Microsoft Visual Studio 2013如何设置查找头文件的路径

  7. javascript如何监听页面刷新和页面关闭事件

    本文转之http://www.qqtimezone.top 在我们的日常生活中,时常遇到这么一种情况,当我们在点击一个链接.关闭页面.表单提交时等情况,会提示我们是否确认该操作等信息. 这里就给大家讲 ...

  8. json中文编码问题

    在和微信接口交互的过程中需要传参json而里面有中文的存在,所以json_encode($data)编码后会形成 {"group":{"name":" ...

  9. 第一个小项目(天气预报软件)——称"酷狗天气"

    一.创建数据库和表 分析: 二.遍历全国省市县数据 分析: 三.显示天气信息 分析: 四.切换城市和手动更新天气 分析: 五.后台自动更新天气 分析:

  10. IO(Input Output)流__字节流

    续: ------->>>>字节流 IntputStream  OutputStream 需求:想要操作图片数据,就需要用到字节流. 读写操作: FileOutputStrea ...