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

代码随想录算法训练营第三十二天 | 动态规划 part01

动态规划基础

动态规划题目类型

  1. 动规基础题
  2. 背包问题
  3. 打家劫舍
  4. 股票问题
  5. 子序列问题

动规5部曲

  1. dp数组定义以及下标含义
  2. 递推公式
  3. dp数组初始化
  4. 遍历顺序
  5. 打印dp数组查找问题

509. 斐波那契数

按照五部曲进行分析:

  1. dp数组的含义是dp[i]就是F(i)
  2. dp[i] = dp[i - 1] + dp[i - 2]
  3. dp[0]=0,dp[1]=1
  4. 从前向后遍历
class Solution {
public:int fib(int n) {vector<int> dp(n + 1);if (n == 0)return 0;if (n == 1)return 1;dp[0] = 0;dp[1] = 1;for (int i = 2; i <= n; ++i) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
};

70. 爬楼梯

动态规划的题目要去找递推函数,其实就是找规律。可以发现本题的规律就是斐波那契数列。

  1. dp[i]含义是爬到第i级台阶有多少种方法
  2. 递推函数:dp[i] = dp[i - 1] + dp[i - 2]。爬到第i阶只要从i-1爬一级或i-2爬两级
  3. dp初始化,dp[1]=1,dp[2]=2
  4. 遍历顺序:从前向后
class Solution {
public:int climbStairs(int n) {vector<int> dp(n + 1);if (n == 1)return 1;if (n == 2)return 2;dp[1] = 1;dp[2] = 2;for (int i = 3; i <= n; ++i) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
};

746. 使用最小花费爬楼梯

  1. dp[i]含义是到达第i层台阶要花费多少,i的取值范围是[0, n],其中n就是楼顶
  2. 递推函数:dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])
  3. dp初始化,dp[0]=0,dp[1]=0
  4. 遍历顺序:从前向后
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> dp(n + 1, 0);for (int i = 2; i < n + 1; ++i) {dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);}return dp[n];}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《学会 SpringMVC 系列 · 剖析出参处理》
  • MacOS 中 Office 历史记录一键清理
  • 2024全新Thinkphp聊天室H5实时聊天室群聊聊天室自动分配账户完群组/私聊/禁言等功能/全开源运营版本
  • 源代码加密防泄漏如何做?
  • 如何实现element-ui 后台中点击按钮,将文本内容复制到剪贴板
  • 【RunnerGo】离线安装成功版本
  • Transwarp Data Studio 4.0 :适应AI新时代实现三大能力提升
  • java基础--字符串用法
  • zotero安装与使用
  • Spring统一功能处理:拦截器、响应与异常的统一管理
  • MM 特殊采购类型
  • 加密简史:从古代到现代的方法
  • Linux网络编程之dpdk的环境配置详解
  • 自动化测试与手动测试的区别!
  • 时光不等人:java每日一练
  • php的引用
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android 控件背景颜色处理
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • co.js - 让异步代码同步化
  • django开发-定时任务的使用
  • IndexedDB
  • JavaScript异步流程控制的前世今生
  • Linux快速复制或删除大量小文件
  • php ci框架整合银盛支付
  • Spark RDD学习: aggregate函数
  • use Google search engine
  • uva 10370 Above Average
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 产品三维模型在线预览
  • 大型网站性能监测、分析与优化常见问题QA
  • 浮动相关
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用权重正则化较少模型过拟合
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 小李飞刀:SQL题目刷起来!
  • 携程小程序初体验
  • 学习JavaScript数据结构与算法 — 树
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ionic异常记录
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # 数论-逆元
  • #1015 : KMP算法
  • $(selector).each()和$.each()的区别
  • $NOIp2018$劝退记
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2022 CVPR) Unbiased Teacher v2
  • (BFS)hdoj2377-Bus Pass
  • (C语言)字符分类函数
  • (done) 两个矩阵 “相似” 是什么意思?
  • (附源码)springboot教学评价 毕业设计 641310
  • (转)3D模板阴影原理
  • *2 echo、printf、mkdir命令的应用