问题 : 不开心的小明①

时间限制: 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. phpstudy升级mysql版本到5.7 ,重启mysql不启动

    phpstudy中mysql升级后MySQL服务无法启动 问题产生: 安装好phpstudy后,升级了MySQL后,通过phpstudy启动,Apache可以启动,Mysql无法启动. 解决方法: 之 ...

  2. php打印负载函数、Linux awk打印负载

    php的sys_getloadavg sys_getloadavt()可以获得系统负载情况.该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1.5和15分钟内的平均负载. 与其让服务器因 ...

  3. Js/html格式化在线工具

    Js/html格式化在线工具 Js/html格式化在线工具:http://tool.chinaz.com/Tools/jsformat.aspx

  4. PHP中private和public还有protected的区别

    原文链接:http://www.thinkphp.cn/code/1898.html <? //父类 class father{ public function a(){ echo " ...

  5. Program Size

    在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息: Program Size: Code=6320  RO-data=4864  RW-data=44  ZI-d ...

  6. 关键字union

    union有一个作用就是判断,pc是大端存储还是小端存储的,x86是小端存储的,这个东西是有cpu决定的.arm(由存储器控制器决定)和x86一样都是小端的. 下面的是一个大端小端的一个例子,代码如下 ...

  7. 自定义Web框架与jinja2模板

    web应用与web框架 web应用 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 import socket def handle_reque ...

  8. linux下如何查看当前机器提供了哪些服务

    答:使用netstat工具 在命令行下输入netstat -atun即可列出当前机器提供的服务 netstat各选项解析: -a 列出所有服务 -t 列出tcp相关 -u 列出udp相关 -n 以数字 ...

  9. Excel中Application和ApplicationClass的区别

    Application和ApplicationClass的联系和区别Application和ApplicationClass都继承自接口_Application.Application为接口.Appl ...

  10. BZOJ 1189 【HNOI2007】 紧急疏散evacuate

    题目链接:紧急疏散 这薄脊题我代码不知不觉就写长了…… 这道题二分答案显然,然后用最大流\(check\)即可.设当前二分的答案为\(x\),那么把每扇门拆成\(x\)个点,第\(i\)个代表在第\( ...