洛谷 P1135 奇怪的电梯 思路

该博客探讨了一个使用深度优先搜索(DFS)算法来遍历特定楼层的问题。代码中,从给定的起始楼层开始,通过递归调用`dfs`函数更新每个楼层的访问状态,并计数步数。当到达目标楼层或者超过预设步数限制时,算法停止。最终,如果目标楼层无法到达,则输出-1,否则输出达到目标楼层所需的最小步数。
摘要由CSDN通过智能技术生成

直接对着所要搜索的楼层强行dfs就行 注意要增进去一个用于判断行动步数的计数

#by solaca

def dfs(it,t):
    global n,f,N
    f[it] = t+1
    if N[it]+it<=n:
        if f[N[it]+it]>t+1:
            dfs(N[it]+it,t+1)
        else:
            return
    if it-N[it]>=1:
        if f[it-N[it]]>t+1:
            dfs(it-N[it],t+1)
        else:
            return




n,a,b=map(int,input().split())
N = [0]+list(map(int,input().split()))
f = [250]*(n+1)
f[a]=1
dfs(a,0)
if f[b]==250:
    print(-1)
else:
    print(f[b]-1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值