力扣63.不同路径II(动态规划)

news2024/7/4 5:41:59
/**
 * @author Limg
 * @date 2022/08/09
 * 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
 * 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。
 * 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
 * 网格中的障碍物和空位置分别用 1 和 0 来表示。
*/
#include<iostream>
#include<vector>
using namespace std;
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid);
int main()
{
    int m=2,n=2;
    cin>>m;
    cin>>n;
    vector<vector<int> > obstacleGrid;
    int value;
    vector<int> temp;  
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            cin>>value;
            temp.push_back(value);
        }
        obstacleGrid.push_back(temp);
        temp.clear();
    }
    cout<<uniquePathsWithObstacles(obstacleGrid)<<endl;
    return 0;
}
//解题函数
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) 
{
    
    int m = obstacleGrid.size();
    int n = obstacleGrid[0].size();
    long record[m][n];
    
    if(obstacleGrid[0][0]==1)
    {
        record[0][0]=0;
    }
    else
    {
        record[0][0]=1;
    }
    for(int i=1;i<m;i++)   
    {
        if(obstacleGrid[i][0]==1)
        {
            record[i][0]=0;
        }
        else
        {
            record[i][0]=record[i-1][0];
        }  
    }
    for(int i=1;i<n;i++)
    {
        if(obstacleGrid[0][i]==1)
        {
            record[0][i]=0;
        }
        else
        {
            record[0][i]=record[0][i-1];    //这里注意!!要考虑前面有障碍物后面都不通
        }
    }
    for(int i=1;i<m;i++)
    {
        for(int j=1;j<n;j++)
        {
            if(obstacleGrid[i][j]==1)
            {
                record[i][j]=0;
            }
            else
            {
                record[i][j]=record[i-1][j]+record[i][j-1];
            }
        }
    }

    return record[m-1][n-1];
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大厂容器云实践之路(三)

5-基于Kubernetes打造SAE容器云 目前SAE基于请求的架构 • 优点 - 进程内隔离&#xff0c;消耗资源最⼩ - ⽆感扩容&缩容&#xff0c;⽤户⽆成本 - Health&Redispatch&#xff0c;升级切换⽆成本 • 缺点 - ⽆法提供独⽴的namespace - ⽆法Build&Ship&Run ⽤…

数据质量:数据越好,模型就越好

如果数据不准确&#xff0c;模型就无法正常运行。虽然最终可能得到一个尚可应付的模型&#xff0c;但它的功能会不尽人意。可以说&#xff0c;数据质量是机器学习模型训练中的重中之重。无论为模型提供了多少数据&#xff0c;如果数据不适用&#xff0c;对改善机器模型的性能就…

网络电影购票系统代理商客户端开发(java开源)

一、背景介绍 随着互联网技术的不断发展&#xff0c;网络电影购票已经成为了人们日常生活中的一部分。然而&#xff0c;在电影购票市场中&#xff0c;代理商客户端的开发与搭建是一个关键环节。接下来将介绍如何使用Java开源技术来开发一个网络电影购票系统代理商客户端。 二、…

基于Spring Boot的网络在线学习网站的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的网络在线学习网站的设计与实现&#xff08;Javaspring bootMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java spri…

C语言笔试训练【第六天】

大家好&#xff0c;我是纪宁。今天是C语言笔试训练的第6天&#xff0c;加油&#xff01; 往期回顾&#xff1a; C语言笔试训练【第五天】 C语言笔试训练【第四天】 C语言笔试训练【第三天】 C语言笔试训练【第二天】 C语言笔试训练【第一天】 1、以下叙述中正确的是&…

2023年,App运行小游戏,可以玩出什么创意?

疫情过后&#xff0c;一地鸡毛。游戏行业的日子也不好过。来看看移动游戏收入&#xff1a;2022年&#xff0c;移动游戏收入达到920亿美元&#xff0c;同比下降6.4%。这告诉我们&#xff0c;2022年对移动游戏市场来说是一个小挫折。 但不管是下挫还是上升&#xff0c;移动游戏市…

第2章:模型评估与选择

经验误差与泛化误差 过拟合是核心问题。 过拟合是无法避免的&#xff0c;只能尽量去缓解。 每个算法都要思考&#xff0c;是怎么缓解过拟合的&#xff1f;缓解方法什么情况下会失效&#xff1f; 模型选择 评估方法 留出法 为什么不能太小&#xff1f; 因为Mx要用来逼近M100的结…

Cesium 积雪效果基于后处理方法

Cesium 积雪效果基于后处理方法 最后效果: this.effect new Cesium.PostProcessStage({name: "czm_snowCover",fragmentShader: snowCover,uniforms: {u_alpha: 1, // 积雪厚度, 0~1},});const stages viewer.scene.postProcessStages;stages.add(this.effect);根…

opencv基础49-图像轮廓02-矩特征cv2.moments()->(形状分析、物体检测、图像识别、匹配)

矩特征&#xff08;Moments Features&#xff09;是用于图像分析和模式识别的一种特征表示方法&#xff0c;用来描述图像的形状、几何特征和统计信息。矩特征可以用于识别图像中的对象、检测形状以及进行图像分类等任务。 矩特征通过计算图像像素的高阶矩来提取特征。这些矩可以…

vuejs 设计与实现 - 简单diff算法

DOM 复用与key的作用&#xff1a; DOM 复用什么时候可复用&#xff1f; key 属性就像虚拟节点的“身份证”号&#xff0c;只要两个虚拟节点的 type属性值和 key 属性值都相同&#xff0c;那么我们就认为它们是相同的&#xff0c;即可以进行 DOM 的复用。即 我们通过【移动】来…

C 语言的 pow() 函数

作用: Calculates x raised to the power of y. 函数原型: double pow( double x, double y ); Required Header: <math.h> Compatibility: ANSI Return Value pow returns the value of x y x^{y} xy. No error message is printed on overflow or underflow. Paramete…

【数据结构刷题】数组oj

前言:本文章是关于在力扣上面的数组相关面试题的讲解&#xff0c;包括:1.原地移除数组中所有的元素val&#xff0c;要求时间复杂度为O(N)&#xff0c;空间复杂度为O(1),2.删除排序数组中的重复项。3. 合并两个有序数组。一.原地移除数组中所有的元素val 题目: https://leetcod…

RT-Thread系列09——Finsh自定义命令

文章目录 1. 无参数命令2. 带参数命令2.1. 字符串参数2.2. 数字型参数 >>> 文章汇总&#xff08;有代码汇总&#xff09; <<< 目标&#xff1a;使用Finsh自定义命令。 RT-Thread studio&#xff0c;版本: 2.2.6。RT-Thread&#xff1a;标准版&#xff0c;4…

《Java-SE-第三十二章》之模拟实现HTTP服务器

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

Flask实现接口mock,安装及使用教程(一)

1、什么是接口mock 主要是针对单元测试的应用&#xff0c;它可以很方便的解除单元测试中各种依赖&#xff0c;大大的降低了编写单元测试的难度 2、什么是mock server 正常情况下&#xff1a;测试客户端——测试——> 被测系统 ——依赖——>外部服务依赖 在被测系统和…

CVE漏洞复现-CVE-2021-3493 Linux 提权内核漏洞

CVE-2021-3493 Linux 提权内核漏洞 漏洞描述 CVE-2021-3493 用户漏洞是 Linux 内核中没有文件系统中的 layfs 中的 Ubuntu over 特定问题&#xff0c;在 Ubuntu 中正确验证有关名称空间文件系统的应用程序。buntu 内核代码允许低权限用户在使用 unshare() 函数创建的用户命名…

象棋中“马”的题目(深搜)

题面 题目描述 中国象棋半张棋盘如图&#xff08;a&#xff09;所示。马自左下角往右上角跳。 今规定只许往右跳&#xff0c;不许往左跳&#xff0c;且要求马跳的方式按照&#xff08;b&#xff09;图顺时针深度优先递归。比如图&#xff08;a&#xff09;中所示为一种跳行路线…

使用动态规划实现错排问题-2023年全国青少年信息素养大赛Python复赛真题精选

[导读]&#xff1a;超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲&#xff0c;这是超平老师解读Python编程挑战赛真题系列的第15讲。 全国青少年信息素养大赛&#xff08;原全国青少年电子信息智能创新大赛&#xff09;是“世界机器人大会青少年机器人设…

Netty:服务端通过ServerBootstrap的childHandler函数设置处理客户端的ChannelHandler

说明 服务端通过io.netty.bootstrap.ServerBootstrap启动&#xff0c;ServerBootstrap的 childHandler(ChannelHandler childHandler)函数用于增加处理客户端的ChannelHandler。这个childHandler一般是ChannelInitializer的子类&#xff0c;用于配置ChannelPipeline&#xff0…

GD32F103VE串口与DMA传输

GD32F103VE串口与DMA传输&#xff0c;本测试采用的的串口1和DMA0之间的数据传输&#xff0c;然后通过RS485和其它设备进行数据交换&#xff0c;没有采用任何中断参与。 GD32F103VE的DMA0请求映射到串口&#xff1a; 1&#xff0c;USART0_RX映射到DMA0的通道4&#xff0c;USART…