一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
分析:之前的动态规划都是一维的,这个是二维的,相较于一维,在设初值方面会麻烦一些,但对于这道题,想法还是不难的。
第一步:dp[i][j]是什么?是到达ij这个点共有几条路径
第二步:如何得到?机器人只能向下或向右移动一步,那么想要得到该点,需要左边那个点的路径与上面那个点。
第三步:初值设那些?如何设?答:第一列与第一行,均设为1即可
参考代码:
public int uniquePaths(int m, int n) {
int[][] dp = new int[m][n];
for(int i=0;i
}
for(int i=0;i
}
for(int i=1;i
}
}
return dp[m-1][n-1];
}
