1013-A strange lift
来源:互联网 发布:新浪财经数据库 编辑:程序博客网 时间:2024/06/16 19:44
1.题号:1013-A strange lift
2.题意:电梯:输入:n个楼层,起始楼层,终止楼层。之后n个数据是每个楼层的可移动层数,既是可上可下的层数,固定的。
3.思路:用队列,从开始就2个选择,上或者下,,,限制条件是《0或者》n或者走过这层了。首先用个数组储存每个楼层的数字。从开始楼层开始广搜,压缩进队列去,下个状态,判断,可以则继续压缩,取出,再压缩,直到队列为空或者在中间就找到目标,则输出步数或-1。
4.感想:挺有意思的一个题,思路很简单。
5.AC代码:
#include <iostream>#include <cstring>#include <queue>using namespace std;int arr[205],brr[205];int start,finish,n;struct dianti{ int lift,step;};int bfs(void){ dianti t,k; queue <dianti> q; memset(brr,0,sizeof(brr)); t.lift=start; t.step=0; brr[t.lift]=1; q.push(t); while(!q.empty()) { t=q.front(); q.pop(); if(t.lift==finish) return t.step; k.lift=t.lift-arr[t.lift]; if(k.lift>0 && k.lift<=n && !brr[k.lift]) { k.step=t.step+1; brr[t.lift]=1; q.push(k); } k.lift=t.lift+arr[t.lift]; if(k.lift>0 && k.lift<=n && !brr[k.lift]) { brr[t.lift]=1; k.step=t.step+1; q.push(k); } } return -1;}int main(){ int i; while(cin>>n) { if(n==0) break; else { cin>>start>>finish; for(i=1;i<=n;++i) cin>>arr[i]; cout<<bfs()<<endl; } } return 0;}
0 0
- 1013-A strange lift
- 1013-A strange lift
- 1013 A strange lift
- 1013 A strange lift
- 1013 A strange lift
- 1013&&1014 A strange lift
- BFS 搜索 Problem 1013 A strange lift
- acm 2 1013 A strange lift
- 课程练习二-1013-A strange lift
- HDU A strange lift
- HDUOJ1548 A strange lift
- hdu1548 A strange lift
- HDOJ A strange lift
- A strange lift
- A strange lift(BFS)
- A strange lift
- A strange lift
- A strange lift
- Maven--pom.xml常用配置
- HDU - 2546 饭卡
- 基于超出内存可加载范围的数据集的逻辑回归分类器LR分类器
- [翻译]angularjs 2.0官方新手入门教程(1)
- angularjs 20160421
- 1013-A strange lift
- 怎样设置log4j日志保存路径为相对路径
- java中volatile关键字的含义
- SpringMVC学习总结(2)——SpringMVC返回json配置
- [翻译]angularjs 2.0官方新手入门教程(2)
- solr-in-action-ch1-Introduction to solr
- hdu 1176 免费馅饼
- HashMap嵌套HashMap嵌套HashMap(三层嵌套)
- js动态添加datagrid表头&批量保存实战研究