HDU 1022(火车过站 栈)
Posted taskr212
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1022(火车过站 栈)相关的知识,希望对你有一定的参考价值。
题意是给定火车进站的序列和出站的序列,问能否完成转换,若能输出过程。
和另一道以火车进站为背景的栈应用题类似,但增加了对于过程的输出,只需要多记录一下进出站顺序即可。
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. "; 30 for(int i = 0; i < cnt; i++) 31 { 32 if(vis[i]) cout << "in "; 33 else cout << "out "; 34 } 35 } 36 else cout << "No. "; 37 cout << "FINISH "; 38 } 39 return 0; 40 }
以上是关于HDU 1022(火车过站 栈)的主要内容,如果未能解决你的问题,请参考以下文章