算法题:电梯 每层只能上或者下固定层数

这是一个关于算法的题目,描述了一个特殊的大楼电梯系统,每层楼电梯可以上下固定的层数。给定起始楼层A、目标楼层B以及每层的电梯上下载层数 Ki,问题求解从A楼到B楼至少需要按多少次按钮,并给出路径。输入包含两行,第一行是三个正整数N、A、B,第二行是N个正整数表示Ki。输出是最少按键次数和楼层路径。提供的解法是使用深度优先搜索(DFS)配合剪枝策略来解决。
摘要由CSDN通过智能技术生成

大楼的每一层楼都可以停放电梯,而且第i层楼(1《=i《=N)上有一个数字Ki(0《=Ki《=N)。电梯有四个按钮:开关上下,上下的层数等于当前楼层的那个数字,当然,如不能满足许需求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按上可以到4楼,按下不起作用。因为没有-2楼。那么A楼到B楼至少按几次按钮呢?
输入描述:每个测试输入共有两行,第一个为三个用空格间隔开的正整数,表示N,A,B(1《=N《=200,1《=A,B《=N),第二行为N个用空格隔开的正整数,表示Ki
输出描述:如果存在解,输出两行,第一行为最少按键次数,第二层为走过的楼层路径,用空格隔开,但最后一个数字没有空格。
若无法到达,则输出一行-1,保证用例测试答案唯一
输入:
5 1 5
3 3 1 2 5
输出:
3
1 4 2 5
(PS:错别字就不要太在意了)

解法(dfs+剪枝):

import java.util.Scanner;

public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值