UVA514 火车站出站问题
来源:互联网 发布:java构造方法不写void 编辑:程序博客网 时间:2024/04/28 18:33
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=455
题目间接:输入N,给定一个序列,判断能否由1~N中的数通过进出栈得到。
思路一:
1:设定一个最大数Max,表示当前进栈到的最大数;
2:先判断序列第一个数j=0,A【j】,从1,2压到A【j】,并Max=A【j】,j后移一位到A【1】
3:
①判断Max与A【j】大小,如果Max<A[j],则说明还要继续压栈才能得到A【j】,从Max+1到A【j】依次压栈,并Max=A【j】
②如果不满足①条件, 且栈顶元素刚好等于A【j】,出栈得到A【j】,j++
③如果不满足①、②条件,说明既不能通过连续压栈得到,也不能通过出栈得到,返回假
int Judge(int n,int A[]){ stack<int> s; int i; for(i=1;i<=A[0];i++) s.push(i); int j=0; int Max=A[0]; while(!s.empty()||j<=n-1) { if(Max<A[j]) { for(i=Max+1;i<=A[j];i++) s.push(i); Max=A[j]; } else if(s.top()==A[j]) { s.pop(); j++; } else { while(!s.empty()) s.pop(); return 0; } } if(s.empty()) return 1; else return 0;}
思路二:
1:创建一个数组a,存放1、 2、 3 ……n,数组b存放输入的序列2:i,j分别作为数组a、b的迭代器,初值为0
3:每次循环,先判断栈是否为空 ①不空,先比较b【j】和栈顶元素,相等,则j++,跳到下一步循环;
②空栈 或者b【j】!=栈顶元素,则比较a【i】和b【j】,相等则i、j++,不等,则压栈,i++
#include <iostream>#include <stack>#include <cstdio>using namespace std;int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout);int a[1001],i;int n,b[1002];stack<int> s;while(cin>>n){for(i=0;i<n;i++)a[i]=i+1;if(n==0)break;while(cin>>b[0]){if(b[0]==0) break;for(i=1;i<n;i++){cin>>b[i];}int j=0;i=0;while(i<n){if(!s.empty()) //每次优先(判断栈非空,比较栈顶元素和当前序列元素) {if(s.top()==b[j]){s.pop(); j++; continue; //}} //压栈的前提是已经判断出栈顶元素与当前序列元素不等,或者栈为空 if(a[i]!=b[j]) {s.push(a[i]);i++;} else {i++;j++;}}while(!s.empty()){if(s.top()==b[j]){s.pop();j++;}else break;}if(s.empty()) cout<<"Yes"<<endl;else cout<<"No"<<endl;while(!s.empty()){s.pop();}}cout<<endl;}return 0;}
0 0
- UVA514 火车站出站问题
- 算法学习日记 火车站出站问题序排列算法。
- UVA514 铁轨问题
- 火车进站出站问题
- 火车进站出站问题
- uva514
- UVA514
- UVA514
- UVa514
- UVa514
- 火车站调度问题
- 火车出站入站问题
- 火车站
- 火车站
- 火车站
- 火车站
- 火车站
- 火车站
- 使用位移解决多种客户端显示问题
- iOS6新特征:UICollectionView高级使用示例之CircleLayout
- spring配置quartz定时器任务
- ios开发 - 用企业签名打包ipa
- Git常用命令
- UVA514 火车站出站问题
- 新特性-对Data Pump的增强
- LinkedList源码剖析
- 凭证错误:BKPFF$PRDCLN800在FI中达到的项目最大编号
- 关于博客更新问题
- ClientToScreen 和ScreenToClient 及绘图
- 身份证校验
- 性能分析神器VisualVM
- Struts2配置文件讲解