【算法日志】动态规划:动态规划简介及其简单应用(day33)

news2025/1/12 6:01:52

算法随想录刷题60Day


目录

动态规划简介

动态规划简单应用

斐波那契

 爬楼梯

 使用最小开支爬楼


动态规划简介

动态规划(Dynamic Programming)是一种解决复杂问题的算法设计思想。它的主要思路是将原问题拆分若干个子问题,并分别求解这些子问题,最后将这些子问题组合优化得到原问题的解。

动态规划算法设计一般分为以下五个步骤(动规五部曲):

1. 确立动规数组的大小及其下标的含义。

2. 确定状态转移方程(递推公式)。

3. 初始化动规数组开始的几个元素(边界条件)。

4. 确定动规数组的遍历方向或顺序。

5. 举例测试该动规数组是否可行。

动态规划的关键在于找到合适的状态定义和状态转移方程。通过将大问题划分为小问题,并利用子问题的解来求解大问题,动态规划能够有效地降低问题的复杂度,避免重复计算,提高算法的效率。

动态规划简单应用

斐波那契

	int fib(int n) 
	{
		vector<int> dp(n + 1, 0);
		dp[0] = 0;
		if (n > 0)dp[1] = 1;
		for (int i = 2; i <= n; ++i)
			dp[i] = dp[i - 1] + dp[i - 2];
		return dp[n];
	}

 爬楼梯

	int climbStairs(int n)
	{
		vector<int> dp(n + 1, 0);
		dp[1] = 1;
		if (n > 1)dp[2] = 2;
		for (int i = 2; i <= n; ++i)
			dp[i] = dp[i - 1] + dp[i - 2];
		return dp[n];
	}

 使用最小开支爬楼

	int minCostClimbingStairs(vector<int>& cost)
	{
		int n = cost.size();
		vector<int> dp(n, 0);
		if (cost.size() == 2)return min(cost[0], cost[1]);
		for (int i = 2; i < n; ++i)
			dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
		return min(dp[n - 1] + cost[n - 1], dp[n - 2] + cost[n - 2]);
	}

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

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

相关文章

如何轻松打造美容行业预约小程序,无需编程基础

随着移动互联网的快速发展&#xff0c;小程序已经成为了很多企业和个人开展业务的重要阵地。而在美容行业&#xff0c;开发一款美容预约小程序无疑是一个非常有前景的选择。本文将介绍如何使用乔拓云平台&#xff0c;通过简单的几步操作&#xff0c;制作出一款功能强大的美容预…

Mybatis配置说明

目录 创建maven项目&#xff0c;添加mybatis&#xff0c;mysql依赖的jar包 创建mybatis全局配置文件,配置数据库连接信息,配置sql映射文件 创建sql映射文件 创建一个访问接口 测试 mybatis原是apache的一个开源项目&#xff0c;2010年转投谷歌,从ibtais3.0开始改名为myba…

Ansible 临时命令搭建安装仓库

创建一个名为/ansible/yum.sh 的 shell 脚本&#xff0c;该脚本将使用 Ansible 临时命令在各个受管节点上安装 yum 存储库. 存储库1&#xff1a; 存储库的名称为 EX294_BASE 描述为 EX294 base software 基础 URL 为 http://content/rhel8.0/x86_64/dvd/BaseOS GPG 签名检查为…

【附安装包】Midas Civil2019安装教程

软件下载 软件&#xff1a;Midas Civil版本&#xff1a;2019语言&#xff1a;简体中文大小&#xff1a;868.36M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.…

solidity0.8.0的应用案例11:透明代理合约

选择器冲突 智能合约中,函数选择器(selector)是函数签名的哈希的前4个字节。例如mint(address account)的选择器为bytes4(keccak256("mint(address)")),也就是0x6a627842. 由于函数选择器仅有4个字节,范围很小,因此两个不同的函数可能会有相同的选择器,例如…

【正点原子STM32连载】第二十章 通用定时器脉冲计数实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第二…

页眉横线怎么删除?4个方法,高效删除!

“刚写了一篇文章&#xff0c;但格式上出了点问题&#xff0c;页眉上一直有一条横线&#xff0c;想把它删掉但是一直都删不掉。这是为什么呢&#xff1f;有什么方法可以删除页眉横线吗&#xff1f;” 在使用Word时&#xff0c;用户可以按个人的需求对页面进行调整。在页眉上可以…

老铁,测试小白也可以飙车了!XMind2TestCase,逼格满满!

目录 一、XMind测试用例通用模板 二、导入TestLink 三、导入禅道&#xff08;ZenTao) 四、使用Web转换工具 总结 “ 测&#xff01;不&#xff01;用&#xff01;脑&#xff1f;别傻了&#xff0c;用XMind2TestCase&#xff0c;测试更轻松&#xff0c;更牛掰&#xff01; …

移动端和PC端对比【组件库+调试vconsole +构建vite/webpack+可视化echarts/antv】

目录 组件库 移动端 vue vant PC端 react antd vue element 调试&#xff1a;vconsole vs dev tools中的控制台&#xff08;Console&#xff09; ​​​​​​​vconsole&#xff1a;在真机上调试 构建工具 webpack 原理 Babel&#xff1a;JS编译器&#xff08;…

学员心得 | 突破瓶颈!云计算HCIE帮我走出职场舒适区

大家好&#xff0c;我是誉天云计算的吴同学&#xff0c;是安徽的一名“大龄考生”。读研后我已工作多年&#xff1a;在上海奋斗七年&#xff0c;回到老家又安稳了十年。这期间做过领导&#xff0c;也当过小兵&#xff0c;起起伏伏走到今天&#xff0c;才发现职业与技术都已然面…

7年测试经验之谈 —— 编写一个接口自动化测试程序

下面是一个简单的接口自动化测试程序的示例&#xff0c;使用requests库发送HTTP请求并使用unittest框架进行断言&#xff1a; import requests import unittestclass ApiTests(unittest.TestCase):def setUp(self):self.base_url "http://api.example.com/"def tes…

C# 工厂模式

一、概述 工厂模式&#xff08;Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。在C#中&#xff0c;工厂模式通过定义一个公共接口或抽象类来创建对象&#xff0c;而具体的对象创建则由工厂类来实现。 工厂模式主要包含三个角色…

Jmeter性能测试 —— TPS拐点寻找

寻找TPS性能拐点1、准备脚本①在本地电脑调试Jmeter压测脚本 寻找TPS性能拐点1、准备脚本①在本地电脑调试Jmeter压测脚本 2、执行压力测试①执行压测脚本 jmeter –n –t xianchengzuse.jmx ②记录业务压测数据 3、监控服务器性能指标 ①监控CPU输入top命令 ②监控内存 fre…

AcrelEMS-HIM高速公路综合能效解决方案-安科瑞黄安南

高速公路供配电行业背景 合能效解决方案 高速公路电力监控及综合能效管理系统 高速公路典型硬件

游戏中的图片打包流程,免费的png打包plist工具,一款把若干资源图片拼接为一张大图的免费工具

手机游戏开发中&#xff0c;为了提高图片渲染性能&#xff0c;经常需要将小图片合并成一张大图进行渲染。如果手工来做的话就非常耗时。TexturePacker就是一款非常不错方便的处理工具。TexturePacker虽然非常优秀&#xff0c;但不是免费的。 对于打包流程&#xff0c;做游戏的…

读SQL学习指南(第3版)笔记03_创建和填充数据库

1. 创建数据表 1.1. sql CREATE TABLE person(person_id SMALLINT UNSIGNED,fname VARCHAR(20),lname VARCHAR(20),eye_color CHAR(2),birth_date DATE,street VARCHAR(30),city VARCHAR(20),state VARCHAR(20),country VARCHAR(20),postal_code VARCHAR(20),CONSTRAINT pk_p…

软件测试技术分享丨使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…

凯迪正大—变比测试仪

一、产品简介 KDB-II全自动变比组别测试仪是根据 《中华人民共和国电力行业标准》制造的高电压测试设备&#xff0c;按通用技术条件 DL/T963-2005设计&#xff0c;依据《电力设备交接和预防性试验规程》&#xff0c;可有效监督变压器产品出厂及使用过程中的质量&#xff0c;防…

java.lang.IllegalStateException: Failed to load ApplicationContext异常

错误原由 今天在编写SpringBoot项目整合MyBatis框架的过程中&#xff0c;产生了这个错误 java.lang.IllegalStateException: Failed to load ApplicationContextat org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheA…

Flutter性能揭秘之RepaintBoundary

作者&#xff1a;xuyisheng Flutter会在屏幕上绘制Widget。如果一个Widget的内容需要更新&#xff0c;那就只能重绘了。尽管如此&#xff0c;Flutter同样会重新绘制一些Widget&#xff0c;而这些Widget的内容仍有部分未被改变。这可能会影响应用程序的执行性能&#xff0c;有时…