LeetCode63:不同路径II

代码如下

复制代码
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 < 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] == 1)
                    continue;
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }
        return dp[m - 1][n - 1];
    }
};

这个题目其实也就是多加了一个条件,多了障碍物,不能走。这个时候要对初始化进行一定的判断。

我写这个题目的错误点:

(1)好长时间都没用vector这个二维数组了,我连遍历都忘了怎么遍历了。

重点写一下。

复制代码
//这个是行的多少,也就是来测量二维数组有多少行
obstacleGrid.size();
//这个是列的多少,也就是来测量二维数组有多少列
obstacleGrid[0].size();

遍历二维数组vector<vector <int> > arr(m, vector<int>(n, 0))

for(int i = 0; i < arr.size(); i++)
{
    for(int j = 0; j < arr[i].size(); j++)
    {

    }
}
这个即可,真的是糊涂!

(2)if里面的判断语句,我居然写成了dp[i][j] == 1,我感觉我的脑子真是有坑,不知道怎么想的,实际上现在想想,并不是dp[i][j] == 1,毕竟我们要求的是dp[i][j],所以肯定是得需要原先的数obs来判断障碍物

相关推荐
故事和你911 分钟前
洛谷-入门6-函数与结构体
开发语言·数据结构·c++·算法·动态规划
青瓷程序设计8 分钟前
【基于 YOLO的咖啡豆果实成熟度检测系统】+ Python+算法模型+目标检测+2026原创
python·算法·yolo
程序员Shawn9 分钟前
【机器学习 | 第七篇】- 聚类算法
算法·机器学习·聚类
天才测试猿9 分钟前
Python接口自动化测试之Token详解及应用
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
地平线开发者15 分钟前
征程 6X watchdog 问题分析
算法·自动驾驶
像素猎人17 分钟前
蓝桥杯OJ716【限定第一步和最后一步爬台阶的经典例题】【动态规划】
c++·算法·动态规划
Q741_14721 分钟前
每日一题 力扣 3474. 字典序最小的生成字符串 贪心 字符串 C++ 题解
c++·算法·leetcode·贪心
人道领域23 分钟前
LeetCode【刷题日记】:螺旋矩阵逆向全过程,边界缩进优化
算法·leetcode·矩阵
ALex_zry25 分钟前
物联网数据质量控制系统设计:质控算法与实现
物联网·算法·struts
EQUINOX129 分钟前
货物运输问题,前缀和优化dp,[牛客周赛137 F-小苯的糖果盒]
算法·动态规划