杭电1002http://acm.hdu.edu.cn/showproblem.php?pid=1022

Train Problem I

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

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
 
Recommend
We have carefully selected several similar problems for you:  1026 1023 1004 1032 1010 
 
 
这个题要是手写栈的话一定要注意范围各个参数的范围
 
题意: 火车进站,出站能否按所给顺序出站  标准栈。
 

  代码1:

  1. #include<cstdio>
  2. #include<string>
  3. #include<iostream>
  4. #define N 20
  5. using namespace std;
  6. string sc[N];
  7. string in,out;
  8. char str[N];
  9. int main()
  10. {
  11. int t ,i , j ,c , k ;
  12. while(~scanf("%d",&t))
  13. {
  14. in.clear();out.clear();
  15. cin>>in>>out;
  16. j = ;c = ; k =;
  17. for( i = ; i < t ; i++ )
  18. {
  19. str[c]=in[i];
  20. sc[k++]="in";
  21. while(c!=-&&str[c]==out[j])//这儿有点问题,c=0这儿有歧义,有时候栈为空,有时候不空,最好别这么写
  22. //也就是,str有变化的时候,第一时间修改c的值
  23. //这儿就是用混了,写成了c != 0,事实上,这儿c=0的时候,栈里还有一个元素
  24. {
  25. sc[k++] = "out";
  26. c--;j++;
  27. }
  28. c++;
  29. }
  30. if(j==t) {printf("Yes.\n");
  31. for( i = ;i < k ; i++)
  32. printf("%s\n", sc[i].c_str());} //string是不可以printf的,要用c_str函数,转为字符数组
  33. else printf("No.\n");
  34. printf("FINISH\n");//少了换行
  35. }
  36. //system("PAUSE");
  37. return ;
  38. }

代码2:

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stack>
  4. using namespace std;
  5. int main()
  6. {
  7. int n, i, j, k, flag[];
  8. char s1[], s2[];
  9. stack <char> s;
  10. while(~scanf("%d %s%s",&n,s1,s2))
  11. {
  12. while(!s.empty()) s.pop(); //也可以不写这一句,把 stack <char> s; 就可以了
  13. memset(flag,-,sizeof(flag));
  14. j = k = ;
  15. for(i = ; i < n; i++)
  16. {
  17. s.push(s1[i]);
  18. flag[k++] = ;
  19. while(!s.empty() && s.top() == s2[j])
  20. {
  21. flag[k++] = ;
  22. s.pop();
  23. j++;
  24. }
  25. }
  26. if(j == n)
  27. {
  28. printf("Yes.\n");
  29. for(i = ; i < k; i++)
  30. {
  31. if(flag[i])
  32. printf("in\n");
  33. else
  34. printf("out\n");
  35. }
  36. }
  37. else
  38. printf("No.\n");
  39. printf("FINISH\n");
  40. }
  41. return ;
  42. }

代码3:(感谢提供代码的伟大帅气的松哥~)

  1. #include <cstdio>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int n;
  7. char o1[], o2[];
  8. int stack[];
  9. bool ans[];
  10. while(~scanf("%d", &n))
  11. {
  12. scanf("%s %s", o1, o2);
  13. int top = , cur = , c = ;
  14. for(int i = ; i < n; i++)
  15. {
  16. stack[top++] = o1[i]-'';
  17. ans[c++] = ;
  18. while(top > && stack[top-] == o2[cur]-'')
  19. {
  20. top--;
  21. cur++;
  22. ans[c++] = ;
  23. }
  24. }
  25. if(top > ) puts("No.");
  26. else
  27. {
  28. puts("Yes.");
  29. for(int i = ; i < c; i++)
  30. {
  31. if(ans[i] == ) puts("out");
  32. else puts("in");
  33. }
  34. }
  35. puts("FINISH");
  36. }
  37. return ;
  38. }

train problem I (栈水题)的更多相关文章

  1. HDU 5832 A water problem(某水题)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  2. CODE FESTIVAL 2017 qual B B - Problem Set【水题,stl map】

    CODE FESTIVAL 2017 qual B B - Problem Set 确实水题,但当时没想到map,用sort后逐个比较解决的,感觉麻烦些,虽然效率高很多.map确实好写点. 用map: ...

  3. Train Problem I(栈)

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

  4. Hdu 1022 Train Problem I 栈

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

  5. Train Problem I (HDU 100题纪念)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

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

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

  7. Train Problem(栈的应用)

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

  8. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem C. Contest 水题

    Problem C. Contest 题目连接: http://codeforces.com/gym/100714 Description The second round of the annual ...

  9. Gym 100646 Problem E: Su-Su-Sudoku 水题

    Problem E: Su-Su-Sudoku/center> 题目连接: http://codeforces.com/gym/100646/attachments Description By ...

随机推荐

  1. Xamarin Android Fragment的两种加载方式

    android Fragment的重点: 3.0版本后引入,即minSdk要大于11 Fragment需要嵌套在Activity中使用,当然也可以嵌套到另外一个Fragment中,但这个被嵌套的Fra ...

  2. MySQL在字段中使用select子查询

    前几天看别人的代码中看到在字段中使用select子查询的方法,第一次见这种写法,然后研究了一下,记录下来 大概的形式是这样的: select a .*,(select b.another_field ...

  3. PHP-无限级分类

    给定省市地区数组如下: $area = array(                   array('id'=>1,'name'=>'安徽','parent'=>'0'),     ...

  4. 2.Nginx日常维护技巧

    Nginx日常维护技巧 Nginx配置正确性检查 nginx提供了配置文件调试功能,可以快速定义配置文件存在的问题.执行如下命令检测配置文件的正确性: [root@localhost 桌面]# whi ...

  5. Kotlin——最详细的抽象类(abstract)、内部类(嵌套类)详解

    如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索QQ群号:497071402 进入正题 在前面几个章节中,详 ...

  6. Apache Avro# 1.8.2 Specification (Avro 1.8.2规范)一

    h4 { text-indent: 0.71cm; margin-top: 0.49cm; margin-bottom: 0.51cm; direction: ltr; color: #000000; ...

  7. Xampp配置本地域名及常见错误解决

    本地域名配置 1.计算机-->C盘-->Windows-->System32-->drivers-->etc-->hosts 127.0.0.1       loc ...

  8. 基于zepto的移动端日期和时间选择控件

    前段时间给大家分享过一个基于jQuery Mobile的移动端日期时间拾取器,大家反应其由于加载过大的插件导致影响调用速度.那么今天我把从网络上搜集到的两个适合移动端应用的日期和时间选择插件分享给大家 ...

  9. powerdesigner的使用

    前言 做过建模和设计的人都知道,powerdesigner是个强大实用的工具:采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术.本文档 ...

  10. ${param.name}和${name}的区别

    ${param.name} == request.getParam("name") ${name} == request.getAttribute("name" ...