代码随想录第39天:动态规划

62. 不同路径

复制代码
class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> res(m+1,vector<int>(n+1));
        for(int i=1;i<=m;i++)
        {
            res[i][1]=1;
        }
        for(int j=1;j<=n;j++)
        {
            res[1][j]=1;
        }
        for(int i=2;i<=m;i++)
        {
            for(int j=2;j<=n;j++)
            {
                res[i][j]=res[i-1][j]+res[i][j-1];
            }
        }
        return res[m][n];
    }
};

要思考最后一步路径怎么得来的就能知道递推公式,dp【i】【j】是有上方和左方路径方法的和得来的由此得到递推公式res[i][j]=res[i-1][j]+res[i][j-1];

63. 不同路径 II

复制代码
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m=obstacleGrid.size();
        int n=obstacleGrid[0].size();

        if(obstacleGrid[0][0]==1||obstacleGrid[m-1][n-1])
        {
            return 0;
        }
        vector<vector<int>> dp(m,vector<int>(n,0));
        for(int i=0;i<m&&obstacleGrid[i][0]==0;i++)
        {
            dp[i][0]=1;
        }
        for(int j=0;j<n&&obstacleGrid[0][j]==0;j++)
        {
            dp[0][j]=1;
        }
        for(int i=1;i<m;i++)
        {
            for(int j=1;j<n;j++)
            {
                if(obstacleGrid[i][j]==0)
                {
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
                }
            }
        }
        return dp[m-1][n-1];
    }
};

这道题目的关键是如何处理障碍,遇到障碍时不要赋值,递推公式与上一题一致

相关推荐
羊小蜜.4 小时前
Mysql 03: 连接查询全解——内连接、外连接与复合条件查询
数据库·mysql·算法·连接查询
vivo互联网技术4 小时前
CVPR 2026 | C²FG:用分数差异分析提高条件生成中CFG的引导
人工智能·算法·aigc
Mr_Xuhhh5 小时前
算法题解博客:三道经典题目的思路与实现
算法
算法-大模型备案 多米5 小时前
大模型备案实操指南:材料、流程与避坑要点
大数据·网络·人工智能·算法·文心一言
顾温5 小时前
数据转换函数
开发语言·算法
汉克老师5 小时前
GESP2025年6月认证C++三级( 第三部分编程题(1、奇偶校验)
c++·算法·gesp三级·gesp3级·按位操作
Fcy6485 小时前
算法基础详解(一)模拟算法与高精度算法
算法·模拟算法·高精度算法
Promise微笑5 小时前
算法对齐还是实战突围?解构GEO优化中方法论与实践的权重博弈
算法
米粒15 小时前
力扣算法刷题 Day 29
算法·leetcode·职场和发展
wfbcg5 小时前
每日算法练习:LeetCode 125. 验证回文串 ✅
算法·leetcode·职场和发展