zoj - 1259 - Rails
来源:互联网 发布:郑州麻辣it 编辑:程序博客网 时间:2024/06/02 06:00
题意:火车车厢按1,2,3...的顺序进站,问车厢号是否能排成目标序列出站(栈结构)。
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=259
——>>暑假曾在汝佳神牛的白书上见过这题,原来在zoj上也有……顺序序列与目标序列匹配,匹配上就转到一节车厢;不能的话再用栈顶与目标序列匹配;也不能的话看顺序序列能否放入栈中,能就继续,不能就“No”。只可惜……“Yes”被我写成了“YES”, ”No"被我写成了“NO”,WA了3次!!!每块后都加空行被我弄成了块间加空行,又"PE"了一次......AC之路不容易的呀……
#include <iostream>#include <stack>using namespace std;const int maxn = 1000 + 10;int main(){ int N, i; int target[maxn]; //用来存目标序列 while(cin>>N) { if(N == 0) return 0; while(cin>>target[1]) { if(target[1] == 0) break; //一组测试结束 for(i = 2; i <= N; i++) cin>>target[i]; stack<int> st; int init = 1, cur = 1, ok = 1; //init为初始序列,即1,2,3...,cur为目标序列的下标,ok为能否转换的标记 while(cur <= N) //一直到匹配完所有的车厢 { if(init == target[cur]) //当驶来的车厢号与目标序列车厢号匹配时 { init++; //转到匹配下一节车厢 cur++; //转到匹配下一节车厢 } else if(!st.empty() && st.top() == target[cur]) //当栈中的车厢号与目标序列车厢号匹配时 { st.pop(); //退栈,转到匹配下一节车厢 cur++; //转到匹配下一节车厢 } else if(init <= N) //如果不相匹配但还没到始入的最后一辆车厢时 { st.push(init++); //驶入车厢进栈,且转到下一节车厢 } else //如果不相匹配且已到始入的最后一辆车厢时 { ok = 0; break; } } if(ok) cout<<"Yes"<<endl; else cout<<"No"<<endl; } cout<<endl; } return 0;}
- zoj 1259 Rails
- zoj 1259 Rails.
- zoj 1259 Rails
- zoj - 1259 - Rails
- ZOJ 1259 Rails
- ZOJ-1259-Rails
- ZOJ 1259(Rails)
- ZOJ Problem Set -1259 Rails
- zoj 1259 || poj 1363 Rails(栈~!)
- zoj 1259 || poj 1363 rails(栈)
- zoj 1259
- ZOJ-1259
- Rails
- Rails
- Rails
- rails
- Rails
- rails
- 接口与类与面向对象语言
- android系统优化一:Android中的Handler总结
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- 入门视频采集与处理(学会分析YUV数据)
- java.sql.SQLException: Data truncated for column 'uid' at row 1
- zoj - 1259 - Rails
- Android Project Butter分析
- JSP基本的增删改查操作--MySql(备忘)
- Oracle索引
- SCA(Tuscany)+Spring+Hibernate使用范例
- ubuntu 12.10
- python类型转换、数值操作
- CentOS服务器配置
- ASCII 码的使用