笔试估计又凉了,但还是想知道编程第二道跳格子问题该如何解决,希望能有大佬帮看一下以下代码思路是否正确,不胜感激!
n为格子总数,h0为手里的数
ai是一个数组,每个元素表示当前格子可往后跳几个格子
在第i个格子上,有两种往后跳格子的方式,横跨h0或者a[i]个格子。如果按横跨h0来跳,h0不变;如果这一步按a[i]来跳的话,h0更新为a[i]
求从第一个格子跳到最后一个格子共有几种方法
def dfs(visited,current,h0):
if current<=n-1:
if current==n-1:
if visited not in final_visited:
final_visited.append(visited[:])
else:
for i in [h0,ai[current]]:
xx=current+i # follow h0
h0=i
visited.append(xx)
dfs(visited,xx,h0)
visited.pop()
n,h0=[int(s) for s in input().split()]
ai=[int(s) for s in input().split()]
visited=[0]
current=0
current=0
final_visited=[]
dfs(visited,current,h0)
print(len(final_visited))
全部评论
(3) 回帖