• 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]
                    
            
  • 相关阅读:
    免备案 国外服务器 vps 推荐以及优惠码
    VSCode 实时预览 HTML 页面
    VPS 上安装 Nginx 就是这么简单
    Thinkphp 5 验证码无法正常显示的排错以及解决方案 【已解决】
    Composer 安装 topthink/think-captcha 时报错 requires topthink/framework ^6.0.0 【已解决】
    Linux ps命令
    MySQL 查询不区分大小写的问题以及编码格式问题
    Cyberduck 小黄鸭 跨平台的 FTP 软件
    MySQL 存储过程 详解
    php 四舍五入保留两位小数,自动补齐0
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12945192.html
走看看 - 开发者的网上家园