HDOJ HDU 1022 Train Problem I
来源:互联网 发布:基尼系数统计学算法 编辑:程序博客网 时间:2024/05/19 03:46
HDOJ 1022 Train Problem I
题目
点此查看 HDOJ 1022 Train Problem I
分类
数据结构 栈 (zhàn)
题意
经典 栈问题 火车车厢出入问题
给车厢数 入栈序列 出栈序列
求 是否正确 正确求 出入栈顺序
详细解释见原题
题解
模拟出入栈
按 入栈顺序 模拟入栈
当 栈顶 为 最先出栈元素 时 出栈 并 检查下一个出栈元素例 3 123 312
当前火车 栈 最先出栈元素 出栈序列 123 - 3 - 23 1 3 - 3 21 3 - - 3 21 3 - - 2 1 1 3由上
第四步 栈顶元素相等与出栈顺序相等 出栈
而 第五步 不等 出栈序列有误
故输出
No.
FINISH
技巧
需要输出出入栈顺序
可以用字符串 记录火车出入顺序
只有两种状态 故用 0 1 区分
代码
#include <iostream>#include <stack>using namespace std;int main(){ int n,al,bf; bool f; string a,b; string res; stack<char> train; while(cin >> n >> a >> b) { f = true; al = 0; bf = 0; while(bf != b.length()) { if(train.empty()) { train.push(a[al++]); res += '0'; } while(train.top() != b[bf]) { if(al < a.length()) { train.push(a[al++]); res += '0'; } else { cout << "No." << endl; cout << "FINISH" << endl; f = false; break; } } if(!f) break; train.pop(); res += '1'; bf++; } if(f) { cout << "Yes." << endl; for(int i = 0;i < res.length();i++) if(res[i] == '0') cout << "in" << endl; else cout << "out" << endl; cout << "FINISH" << endl; } res.clear(); while(!train.empty()) train.pop(); } return 0;}
阅读全文
0 0
- HDOJ HDU 1022 Train Problem I
- HDOJ 1022 Train Problem I
- HDOJ 1022 Train Problem I
- HDOJ 1022 Train Problem I
- hdoj 1022 Train Problem I
- HDOJ 1022 Train Problem I
- hdoj 1022Train Problem I
- hdoj 1022 Train Problem I
- HDOJ/HDU 1022 Train Problem I(模拟栈)
- HDOJ Train Problem I
- HDOJ Train Problem I
- HDU 1022 Train Problem I
- HDU-1022 Train Problem I
- HDU 1022 Train Problem I
- HDU 1022 ( Train Problem I )
- HDU 1022 Train Problem I
- HDU 1022 Train Problem I
- Hdu 1022 - Train Problem I
- C++ string的万能转换,从long string 之间的转换来看看
- 直播延迟相关的知识
- 写给后端的前端笔记:定位(position)
- vue常用过滤器
- Spark官方文档翻译:Quick Start
- HDOJ HDU 1022 Train Problem I
- hy
- 序列化二叉树
- CodeForces
- 算法学习——并查集
- LeetCode 53. Maximum Subarray
- ffmpeg 使用笔记(一)
- 顶部和底部固定中间自适应的布局
- java数组的定义初始化关于内存的理解