zoukankan      html  css  js  c++  java
  • 114. 不同的路径(dp动态规划)

    114. 不同的路径

    中文English

    有一个机器人的位于一个 m × n 个网格左上角。

    机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。

    问有多少条不同的路径?

    样例

    Example 1:

    Input: n = 1, m = 3
    Output: 1	
    Explanation: Only one path to target position.
    

    Example 2:

    Input:  n = 3, m = 3
    Output: 6	
    Explanation:
    	D : Down
    	R : Right
    	1) DDRR
    	2) DRDR
    	3) DRRD
    	4) RRDD
    	5) RDRD
    	6) RDDR
    

    注意事项

    n和m均不超过100
    且答案保证在32位整数可表示范围内。

    输入测试数据 (每行一个参数)如何理解测试数据?
     
    '''
    1.确定状态 f[m-1][n-1] 最终状态 
    最后一步:最后一步的前一步一定是在f[m-2][n-1] 或者f[m-1][n-2]
    子问题:可以转换为到前一步的次数
    状态: 设f[i][j]为机器人有多少种方式从左上角走到(i,j)

    2.转移方程:f[i][j] = f[i-1][j] + f[i][j-1] 
    也就是说到[i][j]位置的方法总数 = 到[i-1][j] + 到[i][j-1]的方法总数,因为他的前一步一定在这两个位置,两个可能次数和

    3.初始条件和边界情况
    初始条件:f[0][0] = 1
    边界情况:移动到m-1和n-1为止
    以及如果是i=0或者j=0的时候,次数只能为1,f[0][j] = 1 或者 f[i][0] = 1 >>因为机器人只能是向下或者向右,所以只有一种走的可能

    4.计算顺序
    f[0][0] = 1
    第0行:f[0][0],f[0][1]...f[0][n-1]
    ...
    第m行:f[m-1][0],f[m-1][1]...f[m-1][n-1]
    '''
     
    动态规划版本:lintcode通过
    class Solution:
        """
        @param m: positive integer (1 <= m <= 100)
        @param n: positive integer (1 <= n <= 100)
        @return: An integer
        """
        def uniquePaths(self, m, n):
            # write your code here
            #动态规划dp
            #初始条件
            res = []
            for x in range(m):
                res.append([0]*n)
            
            for i in range(m):
                for j in range(n):
                    ##初始边界,初始条件res[0][0]也放在了这里
                    if i == 0 or j == 0:
                        res[i][j] = 1 
                        continue
                    res[i][j] = res[i-1][j] + res[i][j-1]
            
            return res[m-1][n-1]
                    
            
  • 相关阅读:
    leetcode — interleaving-string
    leetcode — unique-binary-search-trees-ii
    leetcode — unique-binary-search-trees
    leetcode — binary-tree-inorder-traversal
    leetcode — restore-ip-addresses
    poj 2774 Long Long Message
    bzoj 1031 [JSOI2007]字符加密Cipher
    BZOJ4554 HEOI2016游戏
    BZOJ4552 HEOI2016排序
    BZOJ4551 HEOI2016树
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12945192.html
Copyright © 2011-2022 走看看