算法入门 6.1.2 铁轨
来源:互联网 发布:网络预约出租车驾驶证 编辑:程序博客网 时间:2024/04/30 02:22
重点:stack和queue
1.先检查两个队列头是否相等,若不等,检查出队列头和栈头是否相等,若不等,检查入队列是否为空,若非空入栈,否则跳出循环
2.每次访问入队列和栈首元素时,注意其是否存在;
实现代码:
#include <iostream>#include <queue>#include <stack>#include <stdio.h>using namespace std;int main(){ int n; freopen("test.in","r",stdin); while(cin >> n){ queue<int> in; queue<int> out; for(int i=0 ; i<n ;i++){ int temp; cin >> temp; out.push(temp); in.push(i+1); } stack<int> fac; while(out.size() != 0){ if(in.size()!= 0 && in.front() == out.front()){ out.pop(); in.pop(); } else if(fac.size()!=0 && fac.top()==out.front()){ fac.pop(); out.pop(); } else if(in.size()!=0){ fac.push(in.front()); in.pop(); } else{ break; } }// fac.push(in.front());// in.pop();// while(out.size() != 0){//// cout << out.front() << " " <<fac.top()<< endl;// while(out.front()!=fac.top()){//// fac.push(in.front());// in.pop();// }// if(out.front() == fac.top()){// fac.pop();// out.pop();// if(fac.size() == 0){// if(in.size() == 0){// break;// }// fac.push(in.front());// in.pop();// }// }// else{// break;// }////// cout << out.front() << " " <<fac.top()<< endl;//// } if(out.size() == 0){ cout << "Yes" << endl; } else{ cout << "No" << endl; } } return 0;}
注释部分为最开始时写的代码,每次先入栈再匹配,相对来说麻烦,中间有的地方没检查队列和栈是否为空。
0 0
- 算法入门 6.1.2 铁轨
- 算法竞赛入门经典 6.1.2 (Y型)铁轨
- 【py交易】算法竞赛入门经典6.1.2 铁轨python
- 例题6.1 铁轨【算法入门经典】
- 算法竞赛入门经典P91铁轨
- 算法竞赛入门经典-铁轨问题
- 算法竞赛入门——铁轨
- 6.1.2 铁轨 P91
- 算法竞赛入门经典:第六章 数据结构基础 6.2铁轨
- 算法训练-铁轨
- 算法之路二:刘汝佳算法竞赛入门经典:栈和队列 铁轨UVa514
- 铁轨
- 铁轨
- 铁轨
- 铁轨
- 铁轨
- 铁轨!!!
- 铁轨!!!!
- Android应用提升性能和用户体验
- IO流
- 父类引用指向子类对象
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
- 正则表达式的使用
- 算法入门 6.1.2 铁轨
- apache 虚拟主机配置
- 【读书笔记-数据挖掘概念与技术】数据预处理
- 懵懵懂懂初识J2EE
- spring学习
- C语言编程风格--Points on C 学习(2)
- 安装PHP常见错误解决error: libjpeg.(a|so),error: libpng.(a|so) not found,error: Cannot find ldap
- ASP.NET面向角色授权之:自带登录控件登录验证与授权原理及自定义修改方法。
- 从polling到Websocket