问题 : 不开心的小明①

时间限制: 1 Sec 内存限制: 128 MB

提交: 2 解决: 1

题目描述

一天, 小明很不开心,先是向女神表白被拒, 数学又考了0分, 回家的路上又丢了钥匙, 他非常的不开心。小明转了一圈又一圈感觉很无聊, 突然他眼前一亮准备乘电梯去b层楼打台球。假设小明现在在a层, 并且每层电梯有上下两个操作。

输入

有t组测试数据,每组数据占两行,第一行有三个整数n、a、b。

n代表楼层数目编号从1-n,第二行有n个数a[],a[i]表示在第i层可以到达第i + a[i]层或者第i - a[i]层。

0<n,a,b<100

输出

求最少按几次按钮,不开心的小明就可以从a层到达b层。

若无法到达,输出-1。

样例输入

3
5 1 5
3 3 1 2 5
17 13 14
7 41 17 27 32 9 45 40 27 24 38 39 19 33 30 42 34
6 1 6
2 4 1 1 1 1

样例输出

3
-1
3

dfs加回溯,最近很少写dfs回溯题目有些思维江化了233333
第一次爆搜发现没开vis数组会无限搜索,开了之后WA才意识到要回溯才可,真是老了= =

#include<bits/stdc++.h>
using namespace std;
int h[1005],n,counts;
bool vis[1005];
void dfs(int a,int b,int c)
{
if(a==b) {counts=min(counts,c);return;}
int up=a+h[a],down=a-h[a];
//cout<<up<<" "<<down<<endl;
if(up<=n&&!vis[up]) {vis[up]=1;dfs(up,b,c+1);vis[up]=0;}                      //每次走的时候标记,走完后取消标记,避免影响到向下走时搜索的结果!
if(down>=1&&!vis[down]) {vis[down]=1;dfs(down,b,c+1);vis[down]=0;}
}
int main()
{
int i,j,k,t,m,a,b;
cin>>t;
while(t--){counts=999999999;
memset(vis,0,sizeof(vis));
cin>>n>>a>>b;
for(i=1;i<=n;++i) cin>>h[i];
//if(a==b) {cout<<0<<endl;continue;}
dfs(a,b,0);
if(counts!=999999999) cout<<counts<<endl;
else cout<<-1<<endl;
}
return 0;
}

hpu积分赛(回溯法)的更多相关文章

  1. 回溯法解决N皇后问题(以四皇后为例)

    以4皇后为例,其他的N皇后问题以此类推.所谓4皇后问题就是求解如何在4×4的棋盘上无冲突的摆放4个皇后棋子.在国际象棋中,皇后的移动方式为横竖交叉的,因此在任意一个皇后所在位置的水平.竖直.以及45度 ...

  2. leetcode_401_Binary Watch_回溯法_java实现

    题目: A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bot ...

  3. uva216 c++回溯法

    因为题目要求最多8台电脑,所以可以枚举全排列,然后依次计算距离进行比较,枚举量8!=40320并不大,但这种方法不如回溯法好,当数据再大一些枚举就显得笨拙了,所以这个题我用回溯法做的,回溯有一个好处是 ...

  4. UVa 129 (回溯法) Krypton Factor

    回溯法确实不是很好理解掌握的,学习紫书的代码细细体会. #include <cstdio> ]; int n, L, cnt; int dfs(int cur) { if(cnt++ == ...

  5. 实现n皇后问题(回溯法)

    /*======================================== 功能:实现n皇后问题,这里实现4皇后问题 算法:回溯法 ============================= ...

  6. UVA - 524 Prime Ring Problem(dfs回溯法)

    UVA - 524 Prime Ring Problem Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & % ...

  7. HDU 2553 n皇后问题(回溯法)

     DFS Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description ...

  8. HDU 1016 Prime Ring Problem (回溯法)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. 八皇后问题-回溯法(MATLAB)

    原创文章,转载请注明:八皇后问题-回溯法(MATLAB) By Lucio.Yang 1.问题描述 八皇后问题是十九世纪著名数学家高斯于1850年提出的.问题是:在8*8的棋盘上摆放8个皇后,使其不能 ...

  10. 使用回溯法求所有从n个元素中取m个元素的组合

    不多说了,直接上代码,代码中有注释,应该不难看懂. #include <stdlib.h> #include <stdio.h> typedef char ELE_TYPE; ...

随机推荐

  1. HttpClient配置SSL绕过https证书

    https://blog.csdn.net/irokay/article/details/78801307 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的 ...

  2. Ubuntu去掉命令行前用户名和主机名方法

    Ubuntu去掉命令行前用户名和主机名方法 $ vi ~/.bashrc 按a或i进入编辑模式 PS1='${debian_chroot:+(debian_chroot)}\w\$ ' 默认为 PS1 ...

  3. Chrome 性能监测

    前端性能优化一直是前端工作中必不可少的一部分,但是我们如何知道哪些部分的性能有优化的空间呢?此时,Chrome 性能监测就派上用场了. 正所谓:知己知彼,百战百胜,只有确定了性能瓶颈,才能有条不紊地进 ...

  4. P4001 [BJOI2006]狼抓兔子(对偶图)

    P4001 [BJOI2006]狼抓兔子 最短路+对偶图 看这题最容易想到的就是网络流.Dinic可以过,据说还跑得比正解快. 如果不写网络流,那么需要知道2个前置知识:平面图和对偶图(右转baidu ...

  5. Linux LNMP架构搭建

    一.搭建LNMP基本架构 1.L(http) N(nginx) M(mysql) P(php) 2.安装顺序 Mysql-->PHP-->Nginx 3.安装包 Discuz_3. htt ...

  6. warning C4018: “<”: 有符号/无符号不匹配

    原因: 将两个不同的类型进行了比较,如: int a:unsigned short b: if(a>b)... 解决:改为同一种类型

  7. Python3基础 help 查看内置函数说明

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  8. numpy.random.randn()与rand()的区别【转】

    本文转载自:https://blog.csdn.net/u010758410/article/details/71799142 numpy中有一些常用的用来产生随机数的函数,randn()和rand( ...

  9. RHEL7--linux系统启动流程与故障排除

    一.Linux启动过程 MBR保存着系统的主引导程序(grub 446字节,分区表64字节),启动过程就是把内核加载到内存. 启动的顺序: 1.BIOS: 2.BIOS激活MBR: 3.MBR中的引导 ...

  10. 【环境搭建】CDH版Hadoop环境搭建

    1.下载组件 首先去CDH网站上下载hadoop组件 地址:http://archive.cloudera.com/cdh5/cdh/5/ 注意版本号要与其他的组件CDH版本一致 2.环境配置 设置主 ...