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. VS快捷编码方式

    概念: 代码段是将预先定义好的可重用代码块快速插入到代码文件中,代码段提高了开发效率,增强了代码的可重用性:既节约了时间,又实现了不同开发人员间代码的共享.同时也可保证同一项目中代码风格的统一.   ...

  2. 禁用UITableViewCell 重用机制

    有时候不想让Cell重用,怎么办勒.接下来介绍两种方法 方法一 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAt ...

  3. Ant-进阶

    Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序时,经常要用这个命令.Make命令其实 ...

  4. pat 1049 Counting Ones

    要统计1到N之间‘1’的个数,如数11包含2个1.所以当N=12时,答案为5. 思想: 找规律,假设ans[N]表示1到N的‘1’的个数,则有a[100]=(a[10]-1)*9+10+a[10]-1 ...

  5. JSTL解析——003——core标签库02

    上一节主要讲解了<c:if/><c:choose/><c:when/><c:otherwise><c:out/>标签的使用,下面继续讲解其它 ...

  6. 自定义 Layer 属性的动画

    默认情况下,CALayer 及其子类的绝大部分标准属性都可以执行动画,无论是添加一个 CAAnimation 到 Layer(显式动画),亦或是为属性指定一个动作然后修改它(隐式动画).   但有时候 ...

  7. hdu 5071 Chat(模拟|Splay)

    Chat Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Sub ...

  8. AE分级渲染

    分级渲染classbreakrenderer位于carto类库中,进行分级渲染时,首先要将相应图层按照某一Field分级.可使用esrisystem类库中的iclassifyGEN类的classify ...

  9. ASP.NET MVC 部分视图(转)

    [部分视图] ASP.NET MVC 里的部分视图,相当于 Web Form 里的 User Control.我们的页面往往会有许多重用的地方,可以进行封装重用.使用 部分视图 :  1. 可以简写代 ...

  10. iOS 发布证书错误 Your build settings specify a provisioning profile with the UUID, no provisioning profile was found

    解决办法 1.找到项目中的**.xcodeproj文件,点击右键,show package contents(打开包内容). 2.打开后找到project.pbxproj文件,用文本编辑器打开.其实就 ...