A strange lift
来源:互联网 发布:查看linux sftp软件 编辑:程序博客网 时间:2024/06/05 22:36
接下来给出n个数,代表第i层能向上或向下走j层
比如题目给的例子
电梯有5层,你在第一层,想到第五层
第一层为3,即可向上或向下走3层,中间不能停,而且层数不能低于1或高于5,
要求出从1到5最小次数
题目为1向上走3,到了第4层,向下走2,到了第2层,再向上走3,到终点,共3步
注意a==b,结果为0
代码:
#include<iostream>#include<stdio.h>#include<string.h>#include<string>#include<algorithm>#include<queue>#include<math.h>using namespace std;int flo[250];bool flag[250];int n, a, b;struct F{int i;int c;}f;queue<F> fs;int dis[2] = { -1, 1 };void bfs(){while (!fs.empty()){F f1 = fs.front();fs.pop();for (int i = 0; i < 2; ++i){int x = f1.i + flo[f1.i] * dis[i];if (x == b){cout << f1.c + 1 << endl;while (!fs.empty()){fs.pop();}return;}if (x <= n && x >= 1 && !flag[x]){f.i = x;flag[x] = true;f.c = f1.c + 1;fs.push(f);}}}cout << -1 << endl;}int main(){while (cin >> n && n){memset(flo, 0, sizeof(flo));memset(flag, 0, sizeof(flag));cin >> a >> b;for (int i = 1; i <= n; ++i){cin >> flo[i];}if (a == b){cout << 0 << endl;}else{f.i = a;f.c = 0;flag[a] = true;fs.push(f);bfs();}}return 0;}
0 0
- 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
- HDU1548 A strange lift
- hdu_1548 A strange lift
- HDU A strange lift
- a strange lift
- HDU1548 A strange lift
- poj1548 A strange lift
- A strange lift
- A strange lift
- hdu1548 A strange lift
- selenium+java环境搭建
- 如何创建一个UICollectionView之使用详解
- 线程的休眠
- OpenCV系列1-简单高效:MFC显示图片、播放视频
- trie字典树
- A strange lift
- hbase 0.92.1 与0.99.2间Htable的不一致
- 单例模式的并发访问
- 线程的优先级设定与礼让
- Hduoj1427 【数学】
- 超全面指南!从零开始教你打造网页设计中的极简风格
- shiro +springmvc+freemarker session问题处理 shiro无法记录登陆前页面问题
- [BZOJ2929][POI1999]洞穴攀行(网络流)
- 基础算法-归并排序