牛客链接: https://www.nowcoder.com/practice/54679e44604f44d48d1bcadb1fe6eb61?tpId=101&tqId=33085&tPage=1&rp=1&ru=/ta/programmer-code-interview-guide&qru=/ta/programmer-code-interview-guide/question-ranking
(在牛客里面用python容易会有时间复杂度的问题)
主要思想是先写出暴力解法,再根据暴力解法里面参数个数建立表,由暴力解法中更新关系建立动态规划转移公式,然后为了降低空间复杂度可以进行空间压缩,将二维数组变一维数组。
# 暴力解法
def main(n, m, k, p):
if n<2 or m<1 or k<1 or p<1:
return -1
return walk(n, m, k, p)
def walk(n, cur, rest, p):
if rest == 0:
return 1 if cur == p else 0
if cur == 1:
return walk(n, cur+1, rest-1, p)
if cur == n:
return walk(n, cur-1, rest-1, p)
return walk(n, cur-1, rest-1, p) + walk(n, cur+1, rest-1, p)
# 压缩空间的dp方法
def main(n, m, k, p):
if n<2 or m<1 or k<1 or p<1:
return -1
dp = [0]*(n+1)
dp[p] = 1
print(dp)
for i in range(1, k+1):
leftup = dp[1]
for j in range(1, n+1):
# 从1到n按顺序遍历,此时

本文探讨了如何使用Python解决机器人到达指定位置的问题。首先从暴力求解开始,然后通过分析暴力方法中的参数关系构建动态规划的转移公式。为了优化空间复杂度,进一步将二维数组转换为一维数组。
最低0.47元/天 解锁文章
420

被折叠的 条评论
为什么被折叠?



