算法通关村第19关【青铜】| 动态规划

动态规划(Dynamic Programming,简称DP)是一种解决多阶段决策过程最优化问题的数学方法。它通常用于解决那些具有重叠子问题和最优子结构性质的问题,这些问题可以分解为多个相互关联的子问题。

动态规划的核心思想是将原问题分解为较小的子问题,然后解决这些子问题,最后合并它们的解以获得原问题的最优解。这个方法通常涉及到创建一个表格或数组来存储子问题的解,以避免重复计算,从而提高算法效率。

关键特征和步骤:

  1. 重叠子问题:原问题可以分解为多个相似或相同的子问题,这些子问题可能需要多次解决。

  2. 最优子结构:问题的最优解可以通过子问题的最优解构建而成。

动态规划的一般步骤如下:

  1. 确定状态:定义问题的状态,通常用一些变量表示,以便描述问题的局部特征。

  2. 定义状态转移方程:找到子问题与原问题之间的关系,这可以通过递归式或迭代式来表示。

  3. 初始化:设置边界条件或初始状态,以确保算法能够正确地运行。

  4. 填表格或数组:计算并存储子问题的解,通常使用循环结构来填充表格或数组。

  5. 解决原问题:通常,最优解可以从填充的表格或数组中提取,以得到原问题的最优解。

动态规划常用于解决许多经典问题,如背包问题、最短路径问题、编辑距离、斐波那契数列等。

例题:给定三个数135,使用这三个数有多少种方式可以构造出一个指定的n(允许重复 允许不同顺序)

n=6

1+1+1+1+1+1 1+1+1+3

1+1+3+1 1+3+1+1

3+1+1+1 3+3

1+5 5+1

例如:dp【7】=dp【7-1】+dp【7-3】+dp【7-5】

不同路径

确定dp[i][j]为走到第i行第j列的总不同路径

递推公式:dp[i][j] = dp[i-1][j]+dp[i][j-1]

初始化:第一行和第一列全为1

确定顺序:从左到右从上到下

class Solution {public int uniquePaths(int m, int n) {int[][] dp = new int[m+1][n+1];for(int i = 1;i<n+1;i++){dp[1][i] = 1;}for(int i = 1;i<m+1;i++){dp[i][1] = 1;}for(int i = 2;i<m+1;i++){for(int j = 2;j<n+1;j++){// System.out.print(dp[i-1][j]+" ");dp[i][j] = dp[i-1][j] + dp[i][j-1];// System.out.print(dp[i][j]+" ");}// System.out.println();}return dp[m][n];}
}

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

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

相关文章

模板学堂|DataEase协助电商企业开展用户运营

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场&#xff08;https://dataease.io/templates/&#xff09;。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板&#xff0c;方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&#xff0c;并…

MyBatis进行单表多表查询以及其中的${}涉及的SQL注入

目录 回顾&#xff1a; 参数占位符#{}和${} ${}唯一使用地方 使用${}造成的SQL注入漏洞 like查询 mapper中接收结果的参数 resultType和resultMap​编辑 多表查询 回顾&#xff1a; 参数占位符#{}和${} #{} 占位符语法通常用于模板引擎或动态查询语句中。它是一种更加安全的…

docker中使用GPU+rocksdb

配置环境 delldell-Precision-3630-Tower  ~  lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focaldelldell-Precision-3630-Tower  ~  nvcc --version nvcc: NVIDIA (R) Cuda comp…

Aroid问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

力扣:133. 克隆图(Python3)

题目&#xff1a; 给你无向连通图中一个节点的引用&#xff0c;请你返回该图的深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node {public int val;public Lis…

高程DEM-等高线生成-AutoCAD等高线

高程DEM-等高线生成-AutoCAD等高线 发布时间&#xff1a;2018-01-17 版权&#xff1a; 同步视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_下载高程等高线使用视频教程 专题地图制作视频教程&#xff1a;卫星地图_高清卫星地图_卫星地图视频_地图数据应用&#xf…

【14】基础知识:React - redux

一、 redux理解 1、学习文档 英文文档&#xff1a;https://redux.js.org/ 中文文档&#xff1a;http://www.redux.org.cn/ Github: https://github.com/reactjs/redux 2、redux是什么 redux 是一个专门用于做状态管理的 JS 库(不是 react 插件库)。 它可以用在 react&am…

Unity2023, Unity2022, Unity2021的性能对比(帧率)

最近由于需要用到Unity最新版的一些功能&#xff0c;比如Spline&#xff0c;比如Foward渲染&#xff0c;新项目用了Unity2022.3.5版本&#xff0c;但是出包之后&#xff0c;感觉帧率很低。本着好奇的态度&#xff0c;专门写了一个测试场景&#xff0c;分别在Unity2023.1.15&…

【数据仓库】hadoop生态圈与数据仓库

文章目录 1.大数据定义2. Hadoop与数据仓库3. 关系数据库的可扩展性瓶颈4. CAP理论5. Hadoop数据仓库工具5.1. RDS和TDS5.2. 抽取过程5.3. 转换与装载过程5.4. 过程管理和自动化调度5.5&#xff0e;数据目录&#xff08;或者称为元数据管理&#xff09;5.6&#xff0e;查询引擎…

【灵动 Mini-G0001开发板】+Keil5开发环境搭建+ST-Link/V2程序下载和仿真+4颗LED100ms闪烁。

我们拿到手里的是【灵动 Mini-G0001开发板】 如下图 我们去官网下载开发板对应资料MM32G0001官网 我们需要下载Mini—G0001开发板的库函数与例程&#xff08;第一手学习资料&#xff09;Keil支持包&#xff0c; PCB文件有需要的&#xff0c;可以自行下载。用户指南需要下载&a…

阿里云starrocks监控告发至钉钉群

背景&#xff1a;新入职一家公司&#xff0c;现场没有对sr的进行监控&#xff0c;根据开发的需求编写了一个python脚本。 脚本逻辑&#xff1a;抓取sr的be/fe/routine load状态信息&#xff0c;判读是否触发告警&#xff0c;若满足告警条件&#xff0c;则发送告警信息到钉钉群…

RTSP/Onvif安防视频平台EasyNVR级联至EasyNVS系统不显示通道,是什么原因?

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。 我们在此前的文章中也介绍过关于EasyNVR级联EasyNVS上云网关综合管理平台的内容&#xff…

2023年Q3季度国内手机大盘销额下滑2%,TOP品牌销售数据分析

根据Canalys机构发布的最新报告&#xff0c;2023年第三季度&#xff0c;全球智能手机市场出货量仅下跌1%&#xff0c;可以认为目前全球手机市场的下滑势头有所减缓。而国内线上市场的表现也类似。 根据鲸参谋数据显示&#xff0c;今年Q3京东平台手机累计销量约1100万件&#xf…

hanniman 1v1 咨询

‍ 一共4种可选方案&#xff0c;3个To C&#xff08;面向AI产品经理的职业规划诊断、求职内推套餐、模拟面试&#xff09;&#xff0c;1个To B&#xff08;面向AI企业/投资机构/券商等&#xff09;。 方案A&#xff1a;职业规划诊断 适合人群&#xff1a;AI产品经理 or 想转型A…

AWS香港Web3方案日,防御云安全实践案例受关注

9月26日&#xff0c;AWS合作伙伴之Web3解决方案日在香港举办。来自人工智能、Web3等领域的创业公司、技术专家、风险投资商&#xff0c;就元宇宙时代未来发展进行了深入交流。现场展示了顶象防御云在金融与Web3领域的安全实践案例。 Web3为互联网体系架构的一个整体演进和升级&…

10种新型网络安全威胁和攻击手法

2023年&#xff0c;网络威胁领域呈现出一些新的发展趋势&#xff0c;攻击类型趋于多样化&#xff0c;例如&#xff1a;从MOVEit攻击可以看出勒索攻击者开始抛弃基于加密的勒索软件&#xff0c;转向窃取数据进行勒索&#xff1b;同时&#xff0c;攻击者们还减少了对传统恶意软件…

【Linux】文件IO基础知识——上篇

目录 前文 一&#xff0c; 系统级——文件操作接口 a. open b. close c. write d. read 二&#xff0c;接口理解 那文件描述符——fd是什么呢&#xff1f; 三&#xff0c;文件描述符分配规则 原理 四&#xff0c;重定向——dup2 简易shell——重定向 五&#xff0c…

【微信小程序】6天精准入门(第3天:小程序flex布局、轮播图组件及mock运用以及综合案例)附源码

一、flex布局 布局的传统解决方案&#xff0c;基于[盒状模型]&#xff0c;依赖display属性 position属性 float属性 1、什么是flex布局&#xff1f; Flex是Flexible Box的缩写&#xff0c;意为”弹性布局”&#xff0c;用来为盒状模型提供最大的灵活性。任何一个容器都可以…

Macos数据库管理:Navicat Premium 中文

Navicat Premium提供了直观且易用的图形用户界面&#xff0c;使得操作更为便捷。Navicat Premium 中文支持多种数据库系统&#xff0c;如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等&#xff0c;可以让用户在同一平台上管理不同类型的数据库。Navicat Premium拥有强大的数据…

3分钟了解 egg.js

Eggjs是什么&#xff1f; Eggjs是一个基于Koajs的框架&#xff0c;所以它应当属于框架之上的框架&#xff0c;它继承了Koajs的高性能优点&#xff0c;同时又加入了一些约束与开发规范&#xff0c;来规避Koajs框架本身的开发自由度太高的问题。 Koajs是一个nodejs中比较基层的…