当前位置: 首页 > news >正文

动态规划探索篇

Leetcode63——不同路径Ⅱ

题目描述:

给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。

网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的移动路径中不能包含 任何 有障碍物的方格。

返回机器人能够到达右下角的不同路径数量。

测试用例保证答案小于等于 2 * 109

示例 1:

输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
解释:3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右

算法思想:

利用动态规划的思想,通过bp[][]二位数组记录每到位置(m,n)时有多少种走法。

算法实现:

int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {//起点有障碍直接返回0if (obstacleGrid[0][0] == 1)return 0;/*bp[m][n]表示到位置m,n有多少种不同的路径*/vector<vector<int>> bp(obstacleGrid.size(),vector<int>(obstacleGrid[0].size(), 1));//bp数组第一行的初始化for (int i = 0; i < obstacleGrid[0].size(); i++) {if (obstacleGrid[0][i] == 1) {while (i < obstacleGrid[0].size()) {bp[0][i++] = 0;}}}//bp数组的第一列初始化for (int i = 0; i < obstacleGrid.size(); i++) {if (obstacleGrid[i][0] == 1) {while (i < obstacleGrid.size()) {bp[i++][0] = 0;}}}//bp数组的计算for (int i = 1; i < obstacleGrid.size(); i++) {for (int j = 1; j < obstacleGrid[0].size(); j++) {if (obstacleGrid[i][j] == 1)bp[i][j] = 0;elsebp[i][j] = bp[i - 1][j] + bp[i][j - 1];}}//终点位置及所求返回return bp[obstacleGrid.size() - 1][obstacleGrid[0].size() - 1];}

相关文章:

动态规划探索篇

Leetcode63——不同路径Ⅱ 题目描述&#xff1a; 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。 网格…...

js中多let与var

在 JavaScript 中&#xff0c;let 和 var 都用于声明变量&#xff0c;但它们有一些关键的区别。主要区别包括作用域、变量提升、可重复声明、以及在全局作用域中的行为。 1. 作用域&#xff08;Scope&#xff09; let&#xff1a;块级作用域。用 let 声明的变量只在其所在的代…...

基于人工智能的搜索和推荐系统

互联网上的搜索历史分析和用户活动是个性化推荐的基础&#xff0c;这些推荐已成为电子商务行业和在线业务的强大营销工具。随着人工智能的使用&#xff0c;在线搜索也在改进&#xff0c;因为它会根据用户的视觉偏好提出建议&#xff0c;而不是根据每个客户的需求和偏好量身定制…...

冷钱包与热钱包的差异 | 加密货币存储的安全方案

随着加密货币的普及&#xff0c;越来越多的人开始重视加密资产的安全存储问题。钱包作为存储数字资产的工具&#xff0c;主要分为冷钱包和热钱包两大类。它们在安全性、便捷性以及适用场景方面各有优劣。了解这两者的差异&#xff0c;有助于投资者根据自己的需求选择合适的钱包…...

014:无人机遥控器操作

摘要&#xff1a;本文详细介绍了无人机遥控器及其相关操作。首先&#xff0c;解释了油门、升降舵、方向舵和副翼的概念、功能及操作方式&#xff0c;这些是控制无人机飞行姿态的关键部件。其次&#xff0c;介绍了美国手、日本手和中国手三种不同的操作模式&#xff0c;阐述了遥…...

PCL 点云高度归一化

目录 一、概述二、代码示例三、结果一、概述 点云高度归一化:为了消除地形起伏对点云数据高程值的影响,特别是在地物间存在显著高程差异的情况下,必须对点云数据进行归一化处理。这一步骤对于许多算法至关重要,因为它能够显著提升后续点云处理或分割任务的准确性。 归一化处…...

【Effective C++】阅读笔记4

1. 确保公有继承中有is-a的关系 Is-a关系理解 该关系就是派生类应该具备基类的所有特性&#xff0c;并且可以替代基类对象使用&#xff0c;例如猫和狗都是动物的派生类&#xff0c;因为猫和狗都和动物形成了is-a关系&#xff0c;猫和狗都是动物。 在该关系下&#xff0c;派生类…...

浅谈mysql【8.0】链接字符串

string connectionString "serveryour_server;useryour_user;passwordyour_password;databaseyour_database;sslmodenone;allowPublicKeyRetrievaltrue;Allow User VariablesTrue;";在 C# 中配置 MySQL 数据库连接字符串时&#xff0c;可以通过添加多个参数来控制连…...

BERT,RoBERTa,Ernie的理解

BERT&#xff1a; 全称&#xff1a;Bidirectional Encoder Representations from Transformers。可以理解为 “基于 Transformer 的双向编码器表示”。含义&#xff1a;是一种用于语言表征的预训练模型。它改变了以往传统单向语言模型预训练的方式&#xff0c;能够联合左侧和右…...

获取 Wind 数据并进行简单的择时分析

使用Python获取Wind数据并进行简单的择时分析时&#xff0c;需要按照以下步骤操作。 &#xff08;1&#xff09;登录Wind官网&#xff0c;在“金融解决方案”的下拉列表里选择“金融终端”选项&#xff0c;如下图3.2所示。 &#xff08;2&#xff09;根据自己计算机的实际情况…...

小檗碱的酵母代谢工程生物合成-文献精读78

De novo production of protoberberine and benzophenanthridine alkaloids through metabolic engineering of yeast 将酵母代谢工程应用于原小檗碱和苯并啡啶类生物碱的从头合成 苄基异喹啉类生物碱的微生物合成-文献精读77 香叶醇酵母生产机器学习优化酵母-文献精读66 黄…...

文件指针和写入操作

文件指针位置 w 模式&#xff1a; 打开文件时&#xff0c;文件指针位于文件的开头。如果文件已存在&#xff0c;文件内容会被清空。写入的数据会从文件开头开始覆盖原有内容。 a 模式&#xff1a; 打开文件时&#xff0c;文件指针位于文件的末尾。如果文件已存在&#xff0c;文…...

跨越科技与文化的桥梁——ROSCon China 2024 即将盛大开幕

在全球机器人技术飞速发展的浪潮中&#xff0c;ROS&#xff08;Robot Operating System&#xff09;作为一款开源的机器人操作系统&#xff0c;已成为无数开发者、研究人员和企业的首选工具。为了进一步推动ROS的应用与发展&#xff0c;全球知名的机器人操作系统会议——ROSCon…...

springboot+shiro 权限管理

一、为什么要了解权限框架 权限管理框架属于系统安全的范畴&#xff0c;权限管理实现对用户访问系统的控制&#xff0c;按照安全规则用户可以访问而且只能访问自己被授权的资源。 目前常见的权限框架有Shiro和Spring Security&#xff0c;本篇文章记录springboot整合sh…...

PureMVC在Unity中的使用(含下载链接)

前言 Pure MVC是在基于模型、视图和控制器MVC模式建立的一个轻量级的应用框架&#xff0c;这种开源框架是免费的&#xff0c;它最初是执行的ActionScript 3语言使用的Adobe Flex、Flash和AIR&#xff0c;已经移植到几乎所有主要的发展平台&#xff0c;支持两个版本框架&#xf…...

25国考照片处理器使用流程图解❗

1、打开“国家公务员局”网站&#xff0c;进入2025公务员专题&#xff0c;找到考生考务入口 2、点击下载地址 3、这几个下载链接都可以 4、下载压缩包 5、解压后先看“使用说明”&#xff0c;再找到“照片处理工具”双击。 6、双击后会进入这样的界面&#xff0c;点击&…...

一位纯理科生,跨界自学中医,自行组方治好胃病、颈椎病与高血脂症,并在最权威的中国中医药出版社出版壹本专业中医图书!

这是一位铁杆中医迷&#xff0c; 也是《神农本草经——精注易读本》的作者。 希望更多的人能够受到启发&#xff0c;感受中医之神奇&#xff0c;敢于跨界&#xff0c;爱好中医&#xff0c;学习中医&#xff01; 一个病人以自己的切身感受与诊断&#xff0c;并使之汤药治愈疾病&…...

运动控制 双轮差速模型轨迹规划

文章目录 一、轨迹规划1.1轨迹平滑与轮迹1.2 目标距离1.3 速度限制1.4 候选速度的计算与调整1.5 路径生成 二、双轮轨迹2.1 计算梯度2.2 计算偏移轨迹2.3 返回结果 一、轨迹规划 1.1轨迹平滑与轮迹 初始时&#xff0c;我们有一条由若干坐标点构成的机器人运行路径。通过对这些…...

使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序

文章目录 实现效果Sortable.js介绍下载依赖添加类名导入sortablejs初始化拖拽实例拖拽完成后的处理总结 在开发过程中&#xff0c;我们经常需要处理表格数据&#xff0c;并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时&#xff0c;拖拽排序功能显得…...

MySQL索引相关介绍及优化(未完...)

如何看一条SQL语句的执行好坏&#xff1f; MySQL提供了自带的工具Explain可以查看sql语句的执行好坏。 explain主要的列&#xff1a; 1&#xff1a;type&#xff1a;这一列表示MySQL决定如何查找表中的行&#xff0c;查找数据行记录的大概范围。 有 system const eq_ref ref…...

基于ESP32与MQTT的家庭环境监测系统:从传感器选型到数据可视化实战

1. 项目概述与核心价值最近几年&#xff0c;我身边越来越多的朋友开始关注家里的空气质量、温湿度这些看不见摸不着&#xff0c;但又实实在在影响生活舒适度和健康的环境指标。从新装修的房子担心甲醛&#xff0c;到有老人小孩的家庭在意PM2.5和二氧化碳浓度&#xff0c;再到南…...

别再死记公式了!用Python手写一个卷积层,彻底搞懂CNN里的‘卷’是怎么算的

用Python手写卷积层&#xff1a;从零理解CNN的"卷"运算 当你第一次看到卷积神经网络(CNN)的数学公式时&#xff0c;那些复杂的符号和下标是否让你望而却步&#xff1f;作为计算机视觉领域的基石&#xff0c;CNN的核心在于理解卷积运算的本质。本文将带你用NumPy从零实…...

MySQL 分区表实战:大表治理的利器与陷阱

开场白 分区表这个东西&#xff0c;我之前一直觉得就是个语法糖&#xff0c;直到有一次运维一张 2 亿行的日志表&#xff0c;查询慢到飞起&#xff0c;索引也建不动了&#xff0c;才认真研究分区表。结果发现分区表确实好用&#xff0c;但坑也不少——分区键选错了、分区裁剪没…...

如何快速获取Steam游戏清单:Onekey工具的终极使用指南

如何快速获取Steam游戏清单&#xff1a;Onekey工具的终极使用指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为Steam游戏清单的繁琐获取过程而烦恼吗&#xff1f;Onekey作为一款完全免…...

【开源】前端拖拽表单设计器 自定义表单

【开源】开源 VUE拖拽表单设计器 自定义表单 开源 tduck-platform: Tduck-填鸭收集器是一款开源的表单在线收集系统&#xff0c;后台基于SpringBootMybatisPlusMySqlRedis&#xff0c;前端基于Vue ElementUI开发&#xff0c;功能强大&#xff0c;界面美观。keywords&#xff1…...

LizzieYzy:围棋AI分析工具的5大核心功能与实战指南

LizzieYzy&#xff1a;围棋AI分析工具的5大核心功能与实战指南 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy LizzieYzy是一款基于Lizzie改进的围棋AI分析图形界面工具&#xff0c;支持Katago、Le…...

从红宝石到光纤:固体激光器家族里,谁才是工业加工界的‘六边形战士’?

从红宝石到光纤&#xff1a;固体激光器家族里&#xff0c;谁才是工业加工界的‘六边形战士’&#xff1f; 在金属切割车间里&#xff0c;激光束正以毫米级精度划过不锈钢板&#xff1b;精密电子产线上&#xff0c;纳米级激光打标机为电路板刻印追溯码&#xff1b;汽车焊接工段…...

RL-ARM CAN迁移至CMSIS-RTOS的实践指南

1. 从RL-ARM CAN到CMSIS-RTOS的迁移背景在嵌入式开发领域&#xff0c;随着Keil MDK版本的迭代&#xff0c;RL-ARM库中的CAN组件逐渐向MDK Middleware过渡。许多基于MDK v4和早期v5版本开发的项目&#xff0c;都使用了RL-ARM库中的CAN驱动实现。当开发者需要将项目升级到较新的M…...

从下载到网页管理:TrueNAS SCALE最新版保姆级安装图文教程(VMware Workstation 17环境)

TrueNAS SCALE在VMware Workstation 17中的全流程部署指南 对于需要在本地环境中快速搭建网络存储测试平台的用户来说&#xff0c;TrueNAS SCALE无疑是一个理想选择。作为TrueNAS家族的最新成员&#xff0c;它不仅继承了传统存储管理系统的稳定性和可靠性&#xff0c;还引入了…...

Apache Fesod:Java开发者处理海量Excel数据的终极解决方案

Apache Fesod&#xff1a;Java开发者处理海量Excel数据的终极解决方案 【免费下载链接】fesod Fast. Easy. Done. Processing spreadsheets without worrying about large files causing OOM. 项目地址: https://gitcode.com/gh_mirrors/fast/fesod 在处理海量Excel数据…...