码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1022(火车过站 栈)

时间:2018-08-24 20:43:44      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:\n   ace   show   click   out   pop   记录   div   int   

题意是给定火车进站的序列和出站的序列,问能否完成转换,若能输出过程。

和另一道以火车进站为背景的栈应用题类似,但增加了对于过程的输出,只需要多记录一下进出站顺序即可。

技术分享图片
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     std::ios::sync_with_stdio(false);
 6     int n,pos,cnt,vis[1000];
 7     stack<char> q;
 8     char come[1000],go[1000];
 9     while(cin >> n)
10     {
11         cin >> come >> go;
12         pos = 0;
13         cnt = 0;
14         while(!q.empty()) q.pop();
15         memset(vis,-1,sizeof(vis));
16         for(int i = 0; i < n; i++)
17         {
18             vis[cnt++] = 1;
19             q.push(come[i]);
20             while(!q.empty()&&q.top() == go[pos])
21             {
22                 q.pop();
23                 pos++;
24                 vis[cnt++] = 0;
25             }
26         }
27         if(pos==n)
28         {
29             cout << "Yes.\n";
30             for(int i = 0; i < cnt; i++)
31             {
32                 if(vis[i]) cout << "in\n";
33                 else cout << "out\n";
34             }
35         }
36         else cout << "No.\n";
37         cout << "FINISH\n";
38     }
39     return 0;
40 }
View Code

 

HDU 1022(火车过站 栈)

标签:\n   ace   show   click   out   pop   记录   div   int   

原文地址:https://www.cnblogs.com/Taskr212/p/9531775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!