【动态规划专栏】专题二:路径问题--------2.不同路径II

简介: 【动态规划专栏】专题二:路径问题--------2.不同路径II


题目来源

本题来源为:

Leetcode 63. 不同路径 II

题目描述

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

题目解析

本题是在不同路径I的基础上加了一个障碍物。

机器人在行走过程中要越过障碍物。

算法原理

1.状态表示

经验+题目要求

对于本题而言就是:

dp[i][j]表示:到达[i,j]位置的时候,一共有多少种方法

2.状态转移方程

其实本题的状态转移方程是很好推的,只用在原来那道不同路径I的基础上加一层判断即可,判断有无障碍物,有障碍物就为0

因此状态方程为:

3.初始化

本题初始化跟之前不同路径I的初始化是一样的。详细讲解过程在不同路径I中详细介绍过

4.填表顺序

从上往下填每一行,每一行从左往右

5.返回值

返回dp[m][n]

代码实现

动态规划的代码基本就是固定的四步:

1.创建dp表
2.初始化
3.填表
4.返回值

本题完整代码实现:

class Solution 
{
public:
    int uniquePathsWithObstacles(vector<vector<int>>& ob) 
    {
        //
        int m=ob.size(),n=ob[0].size();
        //创建dp表
        vector<vector<int>> dp(m+1,vector<int>(n+1));
        //初始化
        dp[1][0]=1;
        //填表
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n;j++)
            {
                //判断是否为障碍物
                if(ob[i-1][j-1]==0)
                {
                    //抄状态转移方程
                    dp[i][j]=dp[i-1][j]+dp[i][j-1];
                }
            }
        }
        return dp[m][n];
    }
};

时间复杂度:O(MN)
空间复杂度:O(M
N)

相关文章
|
缓存 负载均衡 算法
Haproxy负载均衡集群(上)
一、常见的Web集群调度器 目前常见的Web集群调度器分为软件和硬件: 软件通常使用开源的LVS、Haproxy、 Nginx
338 0
|
JavaScript 算法 Windows
95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported
95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported
1458 0
【COT】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
【COT】Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
547 0
|
安全 Java Nacos
Spring Cloud微服务注册到Nacos的IP为内网无法访问
Spring Cloud微服务注册到Nacos的IP为内网无法访问
|
SQL 弹性计算 网络协议
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
|
4天前
|
云安全 人工智能 自然语言处理
|
8天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
800 17
|
11天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
803 59
Meta SAM3开源:让图像分割,听懂你的话

热门文章

最新文章