hdu-1022 Train Problem I
2014-10-15 19:50
295 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1022
题意说在一个火车站只用一个铁轨可供停车,并且每次进入铁轨的车必须等后进来的车走之后才能开走,火车数量最多是9,给定一个驶入顺序,和驶出顺序,问怎么操作才能从驶入顺序得到驶出的顺序,如果能输出方案,不能就输出No。
这题跟算法竞赛入门经典讲过类似,只是这里在判断是否可行的同时需要保存一种操作状态,我是用一个数组标记,为1表示in,为0表示out,并且这题是所有车都要进入铁轨停车,所以不存在直接开走的情况。
题意说在一个火车站只用一个铁轨可供停车,并且每次进入铁轨的车必须等后进来的车走之后才能开走,火车数量最多是9,给定一个驶入顺序,和驶出顺序,问怎么操作才能从驶入顺序得到驶出的顺序,如果能输出方案,不能就输出No。
这题跟算法竞赛入门经典讲过类似,只是这里在判断是否可行的同时需要保存一种操作状态,我是用一个数组标记,为1表示in,为0表示out,并且这题是所有车都要进入铁轨停车,所以不存在直接开走的情况。
#include<cstdio> #include<cstring> #include<stack> using namespace std; int main() { int n,j,flag[10]; char a[10],b[10]; while(scanf("%d %s %s",&n,a+1,b+1)!=EOF) { stack<int>s; memset(flag,0,sizeof(flag)); int ok=1,A=1,B=1,i=0; while(B<=n) { //if(a[A]==b[B]) {flag[i++]=1;A++,B++;} if(!s.empty()&&s.top()==(b[B]-'0')) {flag[i++]=0;s.pop();B++;} else if(A<=n) {flag[i++]=1;s.push(a[A]-'0');A++;} else {ok=0;break;} } if(ok) { printf("Yes.\n"); for(j=0;j<i;j++) if(flag[j]) printf("in\n"); else printf("out\n"); printf("FINISH\n"); } else printf("No.\nFINISH\n"); } return 0; }
相关文章推荐
- 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(stack)
- hdu 1022 Train Problem I(栈的应用。。。)
- HDU 1022 Train Problem I
- hdu 1022 Train Problem I <stack>
- 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 (STL - 栈的使用)
- hdu 1022 Train Problem I
- HDU_1022_Train Problem I
- HDU1022--Train Problem I HDU(136)