动态规划6:63. 不同路径 II

动态规划解题步骤:

1.确定状态表示:dp[i]是什么

2.确定状态转移方程:dp[i]等于什么

3.初始化:确保状态转移方程不越界

4.确定填表顺序:根据状态转移方程即可确定填表顺序

5.确定返回值

题解:63. 不同路径 II - 力扣(LeetCode)

题解:

1.状态表示:dp[i]表示到达[i,j]位置有几种方法

2.状态转移方程:if(无障碍物) dp[i][j]=dp[i-1][j]+dp[i][j-1]

3.初始化:本题如果障碍物在边缘位置,不方便初始化。通过多开一行一列空间,将初始化操作与填表操作合并

4.填表顺序:遍历二维数组,依次填表

5.返回值:dp[m][n]   m为网格行数,n为网格列数

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        size_t m=obstacleGrid.size();
        size_t n=obstacleGrid[0].size();
        //创建dp表
        vector<vector<int>> dp(m+1,vector<int>(n+1));
        //多开位置填值
        dp[0][1]=1;
        //填表
        for(int i=1;i<=m;++i)
        {
            for(int j=1;j<=n;++j)
            {
                if(obstacleGrid[i-1][j-1]==1) dp[i][j]=0;
                else dp[i][j]=dp[i-1][j]+dp[i][j-1];
            }
        }
        return dp[m][n];
    }
};

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 06:56:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 06:56:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 06:56:04       87 阅读
  4. Python语言-面向对象

    2024-06-06 06:56:04       96 阅读

热门阅读

  1. salesforce inactive的用户会收到通知邮件吗

    2024-06-06 06:56:04       30 阅读
  2. Kubernetes (K8s) 普及指南

    2024-06-06 06:56:04       26 阅读
  3. WEB三大主流框架之React

    2024-06-06 06:56:04       24 阅读
  4. Nuxt - middleware 路由中间件

    2024-06-06 06:56:04       30 阅读
  5. 007 异步同步

    2024-06-06 06:56:04       21 阅读
  6. DNS域名

    DNS域名

    2024-06-06 06:56:04      28 阅读
  7. oracle 核心进程

    2024-06-06 06:56:04       26 阅读
  8. Oracle通过datax迁移线上表到历史库

    2024-06-06 06:56:04       26 阅读
  9. [Mac软件]Leech for Mac v3.2 - 轻量级mac下载工具

    2024-06-06 06:56:04       23 阅读
  10. Oracle中clob怎么拼接字符

    2024-06-06 06:56:04       31 阅读