Train Problem I

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16859    Accepted Submission(s): 6300

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
 
栈的应用....
何为栈.....像一个瓶子....同一端进,同一端出....
//用到的头文件
#include<stack>
//声明
stack<type> s; s.push() ; //入栈;
s.top() ; //提起顶端元素
s.pop() ; //删除顶端元素
s.empty() ; //判断是否为空
s.size() ; // 栈的大小

此题纯属模拟即可轻松过....

代码:

 #include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int main()
{
int n,i;
while(cin>>n)
{ stack<char> s;
bool c[];
int rank=,step=;
char a[],b[];
scanf("%s %s",b,a);
for(i=;i<n;i++)
{
if(a[rank]==b[i])
{
/*false---》进栈,true---》出栈*/
c[step++]=false;
c[step++]=true;
rank++;
}
else
{
while(!s.empty())
{
if(a[rank]==s.top())
{
rank++;
s.pop();
c[step++]=true;
}
else break;
}
s.push(b[i]);
c[step++]=false;
}
}
while(rank<n&&a[rank]==s.top())
{
rank++;
s.pop();
c[step++]=true;
}
if(!s.empty())
{
printf("No.\n");
}
else
{
puts("Yes.");
for(i=;i<*n;i++)
{
if(c[i])
puts("out");
else
puts("in");
}
}
puts("FINISH");
}
return ;
}

最新文章

  1. HDU 1087 简单dp,求递增子序列使和最大
  2. 【解决】如何导入导出SharePoint列表和文档库
  3. Android消息机制:Looper,MessageQueue,Message与handler
  4. [HTML]js定时器使用 setInterval
  5. python基础字符串操作
  6. Visual Studio 调试技巧
  7. out ref区别
  8. Python sys.path.append
  9. linux c socket 案源
  10. netflix ribbon概述
  11. 记录一次APP的转让流程
  12. 图论(最短路&amp;最小生成树)
  13. 牛客网round1
  14. [洛谷P1886]滑动窗口 (单调队列)(线段树)
  15. head命令用法总结
  16. docker-compose搭建mongoDB副本集(1主+1副+1仲裁)
  17. java transient 知识点学习
  18. WCF 学习总结1 -- 简单实例
  19. CentOS7 安装supervisor守护进程管理器
  20. 2018.07.23 hdu5828 Rikka with Sequence(线段树)

热门文章

  1. numpy转换
  2. 【TYVJ 五月图论专项有奖比赛】
  3. 第一章 第一个spring boot程序
  4. CSS深入了解border:利用border画三角形等图形
  5. GISer面对创业的困惑
  6. LCS 算法
  7. 【nodejs】使用response输出中文但页面中文乱码的处置
  8. @SuppressLint(&quot;NewApi&quot;)和@TargetApi()的区别
  9. C#应用视频教程3.4 Halcon+C#测试
  10. HDU1698:Just a Hook(线段树区间更新)