Leetcode:62,动态规划
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?(如图1-1)
链接:https://leetcode-cn.com/problems/unique-paths
思路:
类似于跳格子,又或者像小学发教材的时候数课本,假设本书的高度固定,数出一摞书10本,然后在旁边堆出一个同样高度的书堆,就又数了10本出来,这时候就得到了一个20本高度的书堆,下一轮就可以一次性数20本...
本题思路类似,初始化要用的数组然后往里套,每一轮里面残留的数值加上变化量即得到现有数值。
代码参考标答,修改如下
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
p=[1]*n #初始化第一行
for i in range (1,m): #外层循环行(竖着
for j in range(1,n): #内层循环列(横着
p[j]+=p[j-1] #执行前p[j]等于上一行的同一列的元素即dp[i-1][j]即up
#p[j-1]等于dp[i][j-1]即left
return p[-1] #返回最后的结果
作者:bing-cha-jia-cha
链接:https://leetcode-cn.com/problems/unique-paths/solution/20200914-by-bing-cha-jia-cha/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。