LeetCode 不同路径1\2

news/2025/3/16 5:40:39/

不同路径1和2

在这里插入图片描述
在这里插入图片描述
题目在上面
这两个题目都是简单的动态规划问题

对不同路径最初始的问题举个例子
在这里插入图片描述
因为我们的机器人只能向右或者向下走一步 因此这个矩形的第一行和第一列都可以初始化为1

然后我们就可以得到动态规划的方程 f i , j = f i − 1 , j + f i , j − 1 f_{i,j} = f_{i - 1,j} + f_{i,j-1} fi,j=fi1,j+fi,j1
是不是很熟悉? 没错就是我们的杨辉三角

不同路径2

此题就是在第一个题目的基础上加入了一个障碍物,因此我们可以继续模仿第一题的思路解题。

我们可以知道障碍物的地方不能走,因此其状态就是 0 if (grid[i][j] == 0) dp[i][j] == 0
正因如此,由于第一列和第一行只能一条路走到黑,如果中间有障碍物,那么就无法继续走
因此和第一题的初始化有差别,当遇到障碍物时直接退出循环

那么这个题的剩余部分就和第一题一模一样了

不同路径1

class Solution {
public:int uniquePaths(int m, int n) {int dp[m][n];for(int i = 0; i < m; ++i) dp[i][0] = 1;for(int i = 0; i < n; ++i) dp[0][i] = 1;for(int i = 1; i < m; ++i) for(int j = 1; j < n; ++j)dp[i][j] = dp[i - 1][j] + dp[i][j - 1];return dp[m - 1][n - 1];}
};

不同路径2

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size(), n = obstacleGrid[0].size();vector<vector<int>> dp (m, vector<int>(n,0));for(int i = 0; i < m; ++i){if(obstacleGrid[i][0] == 1) break;dp[i][0] = 1;}for(int i = 0; i < n; ++i){if(obstacleGrid[0][i] == 1) break;dp[0][i] = 1;}for(int i = 1; i < m; ++i)for(int j = 1; j < n; ++j)if(obstacleGrid[i][j] != 1)dp[i][j] = dp[i - 1][j] + dp[i][j - 1];return dp[m - 1][n - 1];}
};

本文的题目和图片均来自LeetCode
感谢你的阅读


http://www.ppmy.cn/news/92812.html

相关文章

Spring Boot 单元测试

文章目录 一&#xff0c;Spring Boot单元测试概述二&#xff0c;对项目HelloWorld01进行单元测试1、添加测试依赖启动器和单元测试2、创建测试类与测试方法 三&#xff0c;对项目HelloWorld02进行单元测试1、添加单元测试依赖2、进行单元测试 一&#xff0c;Spring Boot单元测试…

数的范围问题

给定一个按照升序排列的长度为 n的整数数组&#xff0c;以及 q 个查询。 对于每个查询&#xff0c;返回一个元素 k 的起始位置和终止位置&#xff08;位置从 00 开始计数&#xff09;。 如果数组中不存在该元素&#xff0c;则返回 -1 -1。 输入格式 第一行包含整数 n 和 q&…

JSP学生学籍管理系统设计与实现(源代码+论文+开题报告+外文翻译+答辩PPT)

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。 本文采用JSP和MS SQL-Server等软…

逆序对的数量

给定一个长度为 n的整数数列&#xff0c;请你计算数列中的逆序对的数量。 逆序对的定义如下&#xff1a;对于数列的第 i 个和第 j 个元素&#xff0c;如果满足 i<j 且 a[i]>a[j]&#xff0c;则其为一个逆序对&#xff1b;否则不是。 输入格式 第一行包含整数 n &#…

Springcloud1---->Zuul网关

目录 简介加入zuul后的架构快速入门添加Zuul依赖编写zuul启动类编写zuul配置文件编写路由规则 面向服务的路由添加Eureka客户端依赖开启Eureka客户端发现功能添加Eureka配置&#xff0c;获取服务信息修改映射配置&#xff0c;通过服务名称获取 简化的路由配置过滤器使用场景自定…

【Python】字符串操作

知识目录 一、写在前面✨二、字符串逆序三、打印菱形四、总结撒花&#x1f60a; 一、写在前面✨ 大家好&#xff01;我是初心&#xff0c;很高兴再次跟大家见面。&#xff08;相遇就是缘分啊&#xff09; 今天跟大家分享的文章是 Python中的字符串操作 &#xff0c;希望能帮助…

一图看懂 typing_extensions 模块:允许在旧版Python上启用、实验新的类型系统特性,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 typing_extensions 模块&#xff1a;允许在旧版Python上启用、实验新的类型系统特性&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9c…

【C++】容器篇(一)—— vector 的基本概述以及模拟实现

前言&#xff1a; 在之前&#xff0c;我们已经对 string类进行了基本的概述&#xff0c;并且手动的实现了string类中常用的接口函数。本期&#xff0c;我将带领大家学习的是STL库中的一个容器 -- vector 的学习。相比于之前的string类&#xff0c;本期的 vector 相对来说实现起…