出栈顺序判断
2015-10-16 09:54
211 查看
#include<iostream> #include<fstream> #include<stack> #include<sstream> using namespace std; int main() { ifstream in("stack.txt"); for (int n, line = 0; in >> n&&n&&in.ignore();) { cout << (line++ ? "\n" : ""); for (string s; getline(in, s) && s != "0";) { istringstream sin(s); stack<int> st; for (int last = 0, coach; sin >> coach; st.pop()) { for (int p = last + 1; p <= coach; p++) st.push(p); if (last < coach) last = coach; if (st.top ()!= coach) break; } cout << (!sin ? "YES\n" : "NO\n"); } } }
测试样例:
5
3 2 1 5 4
5 4 1 2 3
0
6
6 5 4 3 2 1
0
0
每一组第一个数据代表栈内数据数目,以0结尾
输出:
YES
NO
YES
相关文章推荐
- Java面试参考指南(一)
- Eclipse中项目名出现红色感叹号解决方法
- git 将本地代码push到github
- ListViewr带有选择框的实现
- 查看Eclipse 的版本
- PHP中$_SERVER的详细参数与说明
- pig eclipse插件
- android悬浮窗口的实现
- [Leetcode] Tenth Line的笔记
- Android开发中立即停止AsyncTask和Thread
- iOS的主要框架介绍
- Introduction to CQRS
- jboss性能优化
- JS实现可自定义大小,可双击关闭的弹出层效果
- Effective modern C++ 条款 38:如果异步至关重要请指定std::launch::async
- eclipse自动生成方法注释 快捷键
- iOS UIView 添加点击事件
- 监听服务管理(转)
- javascript中本地对象、内置对象和宿主对象(转)
- 部署到iis后无法加载运行脚本