LC62. 不同路径
解题思路
题目给出了一个重要条件“机器人每次只能向下或者向右移动一步”由这个条件可以得出
- 当前的路径和与他的左边和上边的路径有关。
[i - 1][j] 和 [i][j - 1] - dp使用二维数组,
dp[i][j]能到此处的所有路径和 - 得出推导公式为:
dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - 遍历顺序:顺序遍历
- 初始化:
dp[0][0] = 1
代码
Python
1 | class Solution: |
C++
1 | class Solution { |
Go
func uniquePaths(m int, n int) int {
dp := make([][]int, m)
for i := range dp {
dp[i] = make([]int, n)
}
dp[0][0] = 1
for i := 0; i < m; i++{
for j := 0; j < n; j++ {
if j == 0 && i == 0 {continue}
if 0 <= i - 1 {dp[i][j] += dp[i - 1][j]}
if 0 <= j - 1 {dp[i][j] += dp[i][j - 1]}
}
}
return dp[m - 1][n - 1]
}
评论
