本文转载自微信公众号《我好困》,作者好困。转载此文,好困烦请联系我公众号。问题指出机器人位于mxn网格的左上角(起点在下图中标记为“开始”)。机器人一次只能向下或向右移动一步。机器人尝试到达网格的右下角(下图中标记为“完成”)。总共有多少条不同的路径?图片来源leetcode例子1:输入:m=3,n=7输出:28例子2:输入:m=3,n=2输出:3解释:从左上角开始,一共有3条路径可以得到到右下角。1.右->下->下2.下->下->右3.下->右->下提示:1<=m,n<=100题目数据保证答案小于等于2*109.解题思路是用动态规划算法1.定义状态f[i][j]为到位置(i,j)的路径数2.f[0][0]=1,则最终以m*n的形式,到达右下角的路径数为f[m-1][n-1]中的值3.每次移动,如果当前位置:向下:f[i][j]=f[i-1][j]向右:f[i][j]=f[i][j-1]向下,向右:f[i][j]=f[i-1][j]+f[i][j-1]如果还不明白,看一下流程图:以2*2的格子为例,从f[0][0]开始,那么一开始,节点f[0][0]=1,节点f[0][1]只能通过将f[0][0]移动到对,也就是f[0][1]=f[0][0]节点f[1][0]是一样的,只有f[0][0]向下移动才能得到。即f[1][0]=f[0][0]节点f[1][1],因为f[0][1]向下移动,f[1][0]向右移动。有两种移动方式。即:f[1][1]=f[0][1]+f[1][0]最后是f[m-1][n-1],右下角的位置就是最后的结果。如果你还是不明白的话,建议你手动给2*3的表格移动状态的过渡过程做动画。代码实现1funcuniquePaths(mint,nint)int{2f:=make([][]int,m)3fori:=rangef{4f[i]=make([]int,n)5}6f[0][0]=17fori:=0;i
