Train Problem I

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

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
题解:火车进站,类似于栈;;;
代码:

 #include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
char in[],out[],m[][];
int t;
void display(char *s){
strcpy(m[t++],s);
}
int main(){
int n;
while(~scanf("%d",&n)){memset(m,,sizeof(m));
memset(in,,sizeof(in));
memset(out,,sizeof(out));
t=;scanf("%s%s",in,out);
stack<char>train;
for(int j=,i=;i<n;){
if(!train.empty()&&train.top()==out[i])display("out"),i++,train.pop();
else if(in[j])train.push(in[j++]),display("in");
else break;
}//printf("%d\n",train.size());
//while(!train.empty())printf("%c",train.top()),train.pop();
display("FINISH");
if(train.empty()){puts("Yes.");
for(int i=;i<t;++i)printf("%s\n",m[i]);}
else puts("No."),puts("FINISH");
}
return ;
}

另外,自己写了几个关于栈的括号配对问题,贴下:

代码:

 #include<stdio.h>
char m[];
int top;
bool pop(){
top--;
if(top<)return false;
else return true;
}
void push(char s){
top++;
m[top]=s;
}
int main(){
char x[];
int T;
scanf("%d",&T);
while(T--){top=;
scanf("%s",x);
for(int i=;x[i];i++){
if(x[i]=='('||x[i]=='[')push(x[i]);
else if(x[i]==')'&&m[top]=='('||x[i]==']'&&m[top]=='['){if(!pop())break;}
else push(x[i]);
}//printf("%d",top);
//while(top)printf("%c",m[top--]);
if(top==)puts("Yes");
else puts("No");
}
return ;
}
 #include<stdio.h>
#include<stack>
using namespace std;
char s[];
int main(){
int T,temp;
scanf("%d",&T);
while(T--){temp=;
stack<char>m;
scanf("%s",s);
for(int i=;s[i];i++){if(m.empty()&&(s[i]==')'||s[i]==']')){
temp=;
puts("No");
break;
}
if(s[i]=='('||s[i]=='[')m.push(s[i]);
else if(s[i]==')'&&m.top()=='('||s[i]==']'&&m.top()=='[')m.pop();
else m.push(s[i]);
}
if(m.empty()&&temp)puts("Yes");
else if(temp)puts("No");
}
return ;}

Train Problem I(栈)的更多相关文章

  1. train problem I (栈水题)

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

  2. Hdu 1022 Train Problem I 栈

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

  3. hdu Train Problem I(栈的简单应用)

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

  4. Train Problem(栈的应用)

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

  5. HDU1022 Train Problem I 栈的模拟

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

  6. Train Problem I--hdu1022(栈)

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

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

  8. HDU - 1022 Train Problem I STL 压栈

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

  9. hdu 1022 Train Problem I(栈的应用+STL)

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

随机推荐

  1. struts2——简单登陆实例

    从今天开始,一起跟 各位聊聊java的三大框架——SSH.先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在 运用MVC设计模型来开发Web应用 ...

  2. VB中DateDiff 函数解释

    VB中DateDiff 函数使用方法 DateDiff (interval, Date1 , Date2[,firstweekofyear[,firstweekofyear]])  返回一个Varia ...

  3. Apache与tomcat

    联系 1)Apache和tomcat都是web网络服务器 2)Apache是普通的服务器,本身支持html即普通网页,可以通过插件支持php也可以与Tomcat连通  (Apache单向连接tomca ...

  4. Query获取值常用

    Query获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code...});   //为Sel ...

  5. COM口,串行通讯端口,RS-232接口 基础知识

    COM口即串行通讯端口. COM口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口.电脑上的com口多为9针,最大速率115200bps.通常用于连接鼠标(串口)及通讯设备(如连 ...

  6. (转)swfobject.js 详细解说

    一直想对这个应用做个总结,今天偶然百度到这个效果,为此做个笔记. 用这个js的好处: 1.IE中没有讨厌的虚框问题了.2.提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字.3.易于 ...

  7. C语言链表各类操作详解

    链表概述 链表是一种常见的重要的数据结构.它是动态地进行存储分配的一种结构.它可以根据需要开辟内存单元.链表有一个“头指针”变量,以head表示,它存放一个地址.该地址指向一个元素.链表中每一个元素称 ...

  8. [翻译] C++ STL容器参考手册(第二章 <deque>)

    返回总册 本章节原文:http://www.cplusplus.com/reference/deque/deque/ 1. std::deque template < class T, clas ...

  9. java开发webservice

    第一部分:相关下载配置 1.开发环境   eclipse-jee-mars-2-win32-x86_64.zip  http://www.eclipse.org/downloads/index-pac ...

  10. Linq的一些基础查询

    其中包括对数据中常用的条件查询,投影,分区,排序,分组,集合,元素,量词,和集集等标准查询操作符进行分类介绍 一.条件操作符 条件操作符where类似于SQL中的where子句,用于实现条件查询.下列 ...