HDU 1020 Train Problem I 栈和队列的应用
2012-04-04 18:05
183 查看
/* ---------------------------------------- stratege :stack && queue && simulation Theam : 给你一系列数,一次进栈,问出栈的 顺序是否符合 Author: Johnsondu Time: 2012-04-04 type: data structure
3 123 --- 213 ---》 Yes. in, in, out, out, in, out-----------------------------------------*/#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <stack>#include <queue>#include <cmath>#include <string>using namespace std ;char in[1000], out[1000] ;int n ;char res[1000] ;bool flag ;int main (){int i, j ;int cnt, len ;char ch, tmp ;queue <string> op ;stack <char> Q ;while (scanf ("%d %s %s", &n, in, out) != EOF){//cout << in << endl ;//cout << out << endl ;flag = true ;while (!op.empty())op.pop () ;while (!Q.empty ())Q.pop () ;cnt = 0 ;len = strlen (in) ;Q.push (in[0]) ;op.push ("in") ;for (i = 1; i < len; i ++){ch = Q.top () ;if (Q.empty ()) //火车进栈,如果栈空,直接入栈{Q.push (in[i]) ;op.push ("in") ;continue ;}if (ch == out[cnt]) //如果栈顶元素和结果一致{Q.pop () ;op.push ("out") ; // 出栈cnt ++ ; // out 的元素下标if (!Q.empty ()) //在此情况下,判断接下去的栈顶元素是否与当前out的值相同{tmp = Q.top () ;while (tmp == out[cnt]) //相同则继续出栈{Q.pop () ;cnt ++ ;op.push ("out") ;if (!Q.empty ())tmp = Q.top () ;elsebreak ;}}Q.push (in[i]) ; //将当前值压入栈op.push ("in") ;}else{Q.push (in[i]) ;op.push ("in") ;}}while (!Q.empty ()){ch = Q.top () ;if (ch != out[cnt]){flag = false ;break ;}else{Q.pop () ;op.push ("out") ;cnt ++ ;}}if (flag){printf ("Yes.\n") ;while (!op.empty()){cout << op.front() << endl ;op.pop () ;}}elseprintf ("No.\n") ;printf ("FINISH\n") ;}return 0 ;}
相关文章推荐
- hdu 1896 优先队列的应用
- HDU 1873 看病要排队(优先队列的简单应用)
- hdu 1896 优先队列的应用
- 单调队列的一个应用——求解连续区间最大值(HDU Max Sum of Max-K-sub-sequence)
- HDU 1434幸福列车——优先队列的应用
- HDU 1896 Stones (优先队列的应用)
- HDU 1387 && UVa 540 Team Queue(队列应用)
- hduProblem-1873优先级队列的应用
- hdu 1874 畅通工程续 dijsktra dijkstra+邻接表 优先队列 bellman-ford bellman-ford队列优化(基础题目,一步步优化)
- hdu 2647 Reward 逆拓扑排序+队列
- hdu 1133 卡特兰数的应用 java水大数
- hdu 1253 胜利大逃亡 队列
- 威佐夫博弈(2堆)应用-- HDU 1527 取石子游戏
- 消息队列入门(四)ActiveMQ的应用实例
- hdu 1972 队列模拟
- HDU-4193 Non-negative Partial Sums 单调队列
- HDU 3613 Manacher应用
- 双向队列 HDU - 5929
- HDU-1020-Encoding(水题,但题目意思容易搞错,英语的问题)
- UNIX环境下如何应用消息队列实现进程间通信