1014-A strange lift
来源:互联网 发布:java object转为实体类 编辑:程序博客网 时间:2024/06/11 19:48
同1013-A strange lift题
1.题号:1014-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
- 1014 A strange lift
- 1014-A strange lift
- 1014-A strange lift
- 1014-A strange lift
- 1014 A strange lift
- 1014 A strange lift
- 1013&&1014 A strange lift
- 搜索—Problem_1013&1014-A strange lift
- 课程练习二-1014 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
- 算法入门经典习题6-2,uva712,S-Trees
- Excel转PDF的相关问题处理
- Android开发常遇问题——Process 'command 'D:....\jdk8_64\bin\java.exe'' finished with non-zero exit value 2
- MySQL_Select.php
- 考研回忆录之时间效率
- 1014-A strange lift
- 防止忘记求角度
- iOS开发真机调试与App上架
- linux内存管理之数据结构
- CSS样式四--布局模型
- Web系统架构分层
- Spring mvc 上下文初始化过程
- android中Activity中的WindowManager与Window
- 2.2 从意图返回结果--从intent返回结果