Skip to content

Latest commit

 

History

History
47 lines (40 loc) · 1.1 KB

62.md

File metadata and controls

47 lines (40 loc) · 1.1 KB

62. Unique Paths

一个m*n的矩阵,一个机器人从左上到右下角移动,每次只能往右或往下移动一步,一共有多少种独立的路径

思路:动态规划,状态转移方程: dp[x][y] = dp[x - 1][y] + dp[x][y - 1]

class Solution:
    def uniquePaths(self, m, n):
        """
        :type m: int
        :type n: int
        :rtype: int
        """
        # 6 star,
        # 动态规划,状态转移方程: dp[x][y] = dp[x - 1][y] + dp[x][y - 1]
        dp = [[1 for _ in range(n)] for _ in range(m)]
        for i in range(1, n):
            for j in range(1, m):
                dp[j][i] = dp[j][i-1] + dp[j-1][i]
        return dp[-1][-1]

Go:

// 6 star, 动态规划,状态转移方程dp[i[[j] = dp[i-1][j] + dp[i][j-1],
//首先需要把dp的第一行和第一列全部置为1
func uniquePaths(m int, n int) int {
	dp := make([][]int, m)
	for i:=0; i<m; i++ {
		dp[i] = make([]int, n)
		dp[i][0] = 1
	}
	for j:=0; j<n; j++ {
		dp[0][j] = 1
	}
	for i:=1;i<m;i++ {
		for j:=1; j<n; j++ {
			dp[i][j] = dp[i-1][j] + dp[i][j-1]
		}
	}
	return dp[m-1][n-1]

}