代码随想录算法训练营第三十四天 | 动态规划 part02

62.不同路径

cpp 复制代码
class Solution {
public:
    int uniquePaths(int m, int n) {
        
        vector<vector<int>> dp(m, vector<int>(n, 1));
        for (int i = 1; i < n; ++i) {
            dp[0][i] = 1;
        }
        for (int i = 1; i < m; ++i) {
            dp[i][0] = 1;
        }

        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                dp[i][j] = dp[i][j - 1] + dp[i - 1][j];
            }
        }
        return dp[m - 1][n - 1];
    }
};

63. 不同路径 II

cpp 复制代码
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        vector<vector<int>> dp(m, vector<int>(n, 0));
        for (int i = 0; i < n; ++i) {
            if (obstacleGrid[0][i] != 1) {
                dp[0][i] = 1;
            }
            else 
                break;
        }
        for (int i = 0; i < m; ++i) {
            if (obstacleGrid[i][0] != 1) {
                dp[i][0] = 1;
            }
            else 
                break;
        }
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                if (obstacleGrid[i][j] == 1)
                    dp[i][j] = 0;
                else
                    dp[i][j] = dp[i][j - 1] + dp[i - 1][j];
            }
        }
        
        return dp[m - 1][n - 1];
    }
};
相关推荐
菜鸟555552 小时前
图论:Floyd算法
算法·图论
呼啦啦啦啦啦啦啦啦7 小时前
常见的排序算法
java·算法·排序算法
胡萝卜3.08 小时前
数据结构初阶:排序算法(一)插入排序、选择排序
数据结构·笔记·学习·算法·排序算法·学习方法
地平线开发者8 小时前
LLM 中 token 简介与 bert 实操解读
算法·自动驾驶
scx201310048 小时前
20250814 最小生成树和重构树总结
c++·算法·最小生成树·重构树
阿巴~阿巴~9 小时前
冒泡排序算法
c语言·开发语言·算法·排序算法
散1129 小时前
01数据结构-交换排序
数据结构·算法
yzx9910139 小时前
Yolov模型的演变
人工智能·算法·yolo
weixin_3077791310 小时前
VS Code配置MinGW64编译SQLite3库
开发语言·数据库·c++·vscode·算法
无聊的小坏坏10 小时前
拓扑排序详解:从力扣 207 题看有向图环检测
算法·leetcode·图论·拓扑学