hdu 1022 Train Problem I
来源:互联网 发布:金融超市源码 编辑:程序博客网 时间:2024/06/11 20:42
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.
3 123 3213 123 312
Yes.inininoutoutoutFINISHNo.FINISH 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.".
Hint
题意:
这个就是模拟栈,看通过栈的操作最后是否能符合要求
代码:
#include<iostream>#include<stack>#include<cstring>using namespace std;char n1[10];char n2[10];int help[20];int main(){ int len; while(cin>>len) { memset(help,0,sizeof(help)); stack<char> sstack; cin>>n1; cin>>n2; int j = 0; int k = 0; int i = 0; int t = len; while(t--) { if(sstack.empty()) { //cout<<"here1"<<endl; help[k] = 1; k++; sstack.push(n1[i]); i++; } while((!sstack.empty())&&(sstack.top()==n2[j])) { //cout<<"here2"<<endl; help[k] = 0; k++; sstack.pop(); j++; } while((!sstack.empty()&&sstack.top()!=n2[j])) { //cout<<"here3"<<endl; help[k] = 1; k++; sstack.push(n1[i]); i++; } } if(sstack.size()==0) { cout<<"Yes."<<endl; for(int i = 0;i<2*len;i++) { if(help[i]==1) cout<<"in"<<endl; else cout<<"out"<<endl; } cout<<"FINISH"<<endl; } else { cout<<"No."<<endl; cout<<"FINISH"<<endl; } }}
阅读全文
0 0
- HDU 1022 Train Problem I
- HDU-1022 Train Problem I
- HDU 1022 Train Problem I
- HDU 1022 ( Train Problem I )
- HDU 1022 Train Problem I
- HDU 1022 Train Problem I
- Hdu 1022 - Train Problem I
- HDU-1022:Train Problem I
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- hdu-Train Problem I-1022
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- HDU 1022 Train Problem I
- hdu 1022 Train Problem I
- hdu 1022 Train Problem I
- HDU 1022Train Problem I
- 使用CSS实现两列布局
- 编程问题二:写一个线程池
- nodejs 主子进程通信
- Rails 导出 CSV
- mysql和oracle的函数对比
- hdu 1022 Train Problem I
- 矩阵快速幂模版
- Java8 Collection接口API翻译
- leetcode-39-Combination Sum
- 零基础写Java知乎爬虫之先拿百度首页练练手
- 20170724——学习总结
- 【bzoj1150】[CTSC2007]数据备份Backup
- Day06
- Junit4 针对Service接口的单元测试