hpu积分赛(回溯法)
问题 : 不开心的小明①
时间限制: 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积分赛(回溯法)的更多相关文章
- 回溯法解决N皇后问题(以四皇后为例)
以4皇后为例,其他的N皇后问题以此类推.所谓4皇后问题就是求解如何在4×4的棋盘上无冲突的摆放4个皇后棋子.在国际象棋中,皇后的移动方式为横竖交叉的,因此在任意一个皇后所在位置的水平.竖直.以及45度 ...
- 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 ...
- uva216 c++回溯法
因为题目要求最多8台电脑,所以可以枚举全排列,然后依次计算距离进行比较,枚举量8!=40320并不大,但这种方法不如回溯法好,当数据再大一些枚举就显得笨拙了,所以这个题我用回溯法做的,回溯有一个好处是 ...
- UVa 129 (回溯法) Krypton Factor
回溯法确实不是很好理解掌握的,学习紫书的代码细细体会. #include <cstdio> ]; int n, L, cnt; int dfs(int cur) { if(cnt++ == ...
- 实现n皇后问题(回溯法)
/*======================================== 功能:实现n皇后问题,这里实现4皇后问题 算法:回溯法 ============================= ...
- UVA - 524 Prime Ring Problem(dfs回溯法)
UVA - 524 Prime Ring Problem Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & % ...
- HDU 2553 n皇后问题(回溯法)
DFS Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- HDU 1016 Prime Ring Problem (回溯法)
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 八皇后问题-回溯法(MATLAB)
原创文章,转载请注明:八皇后问题-回溯法(MATLAB) By Lucio.Yang 1.问题描述 八皇后问题是十九世纪著名数学家高斯于1850年提出的.问题是:在8*8的棋盘上摆放8个皇后,使其不能 ...
- 使用回溯法求所有从n个元素中取m个元素的组合
不多说了,直接上代码,代码中有注释,应该不难看懂. #include <stdlib.h> #include <stdio.h> typedef char ELE_TYPE; ...
随机推荐
- JMeter:全面的乱码解决方案
中文乱码一直都是比较让人棘手的问题,我们在使用Jmeter的过程中,也会遇到中文乱码问题 接口:http://127.0.0.1:8090/test 这个接口有一个参数name,返回结果就是你传的na ...
- python之路----进程三
IPC--PIPE管道 #创建管道的类: Pipe([duplex]):在进程之间创建一条管道,并返回元组(conn1,conn2),其中conn1,conn2表示管道两端的连接对象,强调一点:必须在 ...
- Python入门之面向对象编程(二)python类的详解
本文通过创建几个类来覆盖python中类的基础知识,主要有如下几个类 Animal :各种属性.方法以及属性的修改 Dog :将方法转化为属性并操作的方法 Cat :私人属性讲解,方法的继承与覆盖 T ...
- JAVA学习调查问卷——20145101
1.你对自己的未来有什么规划?做了哪些准备? 我希望在未来不管自己是否从事机要工作,都要做一个有能力,对社会能有所贡献的人.所以在现阶段我应该努力学习基础知识,夯实基本功,具备成为合格机要人的素质. ...
- 20145335郝昊《网络攻防》Exp5 MS08_067漏洞测试
20145335郝昊<网络攻防>Exp5 MS08_067漏洞测试 实验内容 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单的渗透操作. 漏洞MS08_067: ...
- [BZOJ4027][HEOI2015]兔子与樱花 树形dp
Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接 ...
- 论文笔记——Factorized Convolutional Neural Networks
1. 论文思想 将3D卷积分解为spatial convolution in each channel and linear projection across channels. (spatial ...
- [POJ1958][Strange Tower of Hanoi]
题目描述 求解 \(n\) 个盘子 \(4\) 座塔的 Hanoi 问题最少需要多少步 问题分析 考虑 \(3\) 座塔的 Hanoi 问题,记 \(f[i]\) 表示最少需要多少步, 则 \(f[i ...
- NYOJ 16 矩形嵌套(经典DP)
http://acm.nyist.net/JudgeOnline/problem.php?pid=16 矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度: ...
- React Native 之轮播图swiper组件
注释:swiper组件是第三方组件 所以在使用之前应该先在命令行安装,然后将第三方的模块引入(第三方模块地址:https://github.com/leecade/react-native-swipe ...