python使用动态规划解决不同路径问题

针对二维动态规划,还有一个问题就是关于求不同路径的实例,主要是说明在实际应用的场景中,要理解透彻实际问题的真正目的,就可以灵活实现代码编写。

对于求不同路径问题描述,对于一个机器人,处在一个mxn的网格子的最左上端,这个机器人每一次移动只能是向左或者向下移动一个格子,机器人的最终目的是到达网格子的最右下端,要想得到的就是这个机器人总共有多少中方法能够到达最右下端,约束条件是m和n的值不会超过100。

添加图片注释,不超过 140 字(可选)

对照动态规划问题的元素对这个问题进行分析,该问题中的机器人每次只能向下或者向右走一步,那如果这个机器人如果处在网格中的任意一处时,来自的机器人要不就是左侧要不就是来自上侧的网格子,所以对于当前机器人所处的网格子的路径数量,应该是到该格子的上侧格子路径总数和到该格子的左侧格子路径总数的数量之和,同时对于该问题限制了m和n的数量,该问题是可以使用动态规划思路来解决问题的。

添加图片注释,不超过 140 字(可选)

可以将该格子定义为一个二维网格空间,使用一个二维数组来进行表示,对于这个二维数组中的初始状态就是第一行和第一列都是1,这是显而易见的,第一列和第一行都只有一只公路径,到达第一行就只有向右走,到达第一列只有向下走的趋势才能够实现。

添加图片注释,不超过 140 字(可选)

其他的格子是在遍历过程中,使用递推关系式来进行填充格子的路径数量,也就是当前所在的网格的路径数量应该等于到达这个格子的左侧和上侧的各自的路径数量的总和。最终得到到达终点的格子的数量总和。完整代码如下:

 
 

def uniquePaths(self, m, n): dp=[] for i in range(n):#初始化 dp.append([0]*m) for i in range(n): dp[i][0]=1 dp[0]=[1]*m for i in range(1,n): for j in range(1,m): dp[i][j]=dp[i-1][j]+dp[i][j-1] return dp[n-1][m-1]

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins怎么配置Publish over SSH,配置SSH Servers连接的两种方式

一、前提条件 jenkins必须已经安装好了publish over ssh的插件 二、方式一(使用密码连接) 1.打开Manager Jenkins的System配置 2.找到Publish over SSH配置项,点击add SSH Server增加一个ssh连接配置 3.填写ssh基本配置 4.点击高级,配置密码 5.点击 Test Configuration…

Maven 整理(含面试题)

Maven是Java 项目必备,Maven 主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。项目构建工具 、更好的管理依赖 目录 Maven安装与运行maven 重要知识点面试题 Maven安装与运行 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理…

sql——窗口范围之partition by 与 order by

partition by 关键字 partition by 在开窗函数中,常用于表示某个分区,规则了数据的范围 order by 关键字 order by 常用于对分区内的数据进行排序,常见的情况下,order by还能规定sql语句的影响范围。 rows between unbounded …

【Python排序算法系列】—— 插入排序

​ ​ 🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 2023年度总结→ http://t.csdnimg.cn/yIeru 目录 插入排序 理解 过程演示: 插…

C语言:二分查找查找有序数组中的元素

前言 在我们学习C语言的过程中,如果要查找一个数组当中是否存在某一个元素,我们可能会遍历整个数组,来依次判断是否存在这个函数,但这么做是效率极低的,如果数组中有很多个元素,那么我们要查找半天 二分查…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 开发板详情与规格

本文主要参考: BQ3588C_开发板详情-开源鸿蒙技术交流-Bearkey-开源社区 BQ3588C_开发板规格-开源鸿蒙技术交流-Bearkey-开源社区 厦门贝启科技有限公司-Bearkey-官网 1. 开发板详情 RK3588 核心板是一款由贝启科技自主研发的基于瑞芯微 RK3588 AI 芯片的智能核心…

Android textview展示富文本内容

今天实现的内容,就是上图的效果,通过Span方式展示图片,需要支持文字颜色改变、加粗。支持style\"color:green; font-weight:bold;\"展示。尤其style标签中的font-size、font-weight是在原生中不被支持的。 所以我们今天需要使用自…

竞赛保研 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

文章目录 0 简介1 二维码检测2 算法实现流程3 特征提取4 特征分类5 后处理6 代码实现5 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 该项目较为新颖,适合作为竞赛课…

【docker】如何编写dockerfile文件,构建docker镜像

如何编写dockerfile文件,构建docker镜像 一、docker 镜像与 dockerfile1.1 什么是Docker镜像1.2 Docker 镜像的结构 二、dockerfile 中常用的构建指令三、dockerfile 内容示例四、构建 docker 镜像 一、docker 镜像与 dockerfile 1.1 什么是Docker镜像 Docker镜像…

目标检测-Owo Stage-YOLOv2

文章目录 前言一、YOLOv2的网络结构和流程二、YOLOv2的创新点预处理网络结构训练 总结 前言 根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是: 和Fast-CNN相比,速度快,但精度下降。(边框回归不加限制)…

Eureka服务注册与发现中心

简介 Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理 在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现…

自动化测试之等待方式详解

在自动化测试中,等待是一个重要的技术,用于处理页面加载、元素定位、元素状态改变等延迟问题。 等待能够确保在条件满足后再进行后续操作,提高自动化测试的稳定性以及可靠性。 等待方式:显示等待、隐式等待、线程睡眠 1. 显式等…