【代码随想录|动态规划】

【代码随想录】动态规划经典题 阅读详情

一、动态规划理论基础

|、动态规划包含题目类型

(1)背包问题

(2)打家劫舍

(3)股票问题

(4)子序列问题

||、做一道题需要掌握(动态规划5步曲):

(1)dp数组和下标的含义

(2)确定递推公式

(3)dp数组如何初始化

(4)确定遍历顺序

(5)打印dp数组

二、动态规划三道题

509.斐波那契数

题目链接:509. 斐波那契数 - 力扣(LeetCode)

这里的步骤是:

1.确定dp[i]含义  dp[i]:第i个斐波那契数的值为dp[i]

2.递推公式:dp[i]=dp[i-1]+dp[i-2];

3.dp数组的初始化 dp[0]=1 dp[1]=1(题目要求)

4.遍历顺序:从前向后

5.(打印dp数组)

class Solution {
public:
    int fib(int n) {
        if(n<=1)return n;
        vector<int> dp(n+1);//第n个数数组里面一共有n+1个数
        dp[0]=0;dp[1]=1;
        for(int i=2;i<=n;i++){//从2开始遍历了
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
};

70.爬楼梯

题目链接70. 爬楼梯 - 力扣(LeetCode)

  1. 确定dp数组:达到i阶,有dp[i]种方法
  2. 确定递推公式:dp[i]=dp[i-2]+dp[i-1]
  3. dp数组如何初始化:dp[1]=1,dp[2]=2;(这里的dp[0]没有意义,题目里说1 <= n <= 45)
  4. 确定遍历顺序:从前向后
  5. 举例推导dp数组

爬到第一层楼梯:有1种方法

爬到二层楼梯:有2种方法。

那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。

爬到第三层就:有3种方法

第二层楼梯跨两步可以到第三层楼梯,第三层楼梯再跨一步就到第四层。

爬到第四层就:有5种方法

相应的第五层:有8种方法

class Solution {
public:
    int climbStairs(int n) {
        if(n<=1)return n;
        vector<int> dp(n+1);
        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.使用最小花费爬楼梯

题目链接746. 使用最小花费爬楼梯 - 力扣(LeetCode)

1.确定dp[i]含义  dp[i]:到达第i个位置的最小

花费

2.递推公式: dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);

3.dp数组的初始化 dp[0]=1 dp[1]=0

4.遍历顺序:从前向后

5.(打印dp数组)

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        vector<int>dp(cost.size()+1);
        for(int i=2;i<=cost.size();i++){
            dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
        }
        return dp[cost.size()];
    }
};

 

 

因为dp[i]要通过dp[i-1]和dp[i-2]推出来,所以:

递推公式里面的这个dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2];表达的是前面两层 每一层的花费加上前一层到这一层需要的花费,取最小的那个

当前层总花费的最小值(dp[i]):我要算前面两层已经的花费加上他们 到当前层的花费 求最小值

这样算出来的dp数组天然就是加上前面的花费的。

YOLO11实战优化:长尾分布解决 | 引入Seesaw Loss配合YOLO11分类头,完美应对类别极其不平衡的现实业务场景 摘要: YOLO11在工业缺陷检测等长尾分布场景中面临尾部类别检测失效的问题,根源在于头部类别样本的负样本梯度压制了尾部类别的学习。传统方法如重采样、Focal Loss等效果有限。Seesaw Loss通过动态调整缓解因子和补偿因子,平衡类别间的梯度分布,结合YOLO11的解耦分类头、Anchor-Free设计和C2PSA/C3K2模块,显著提升尾部类别识别能力。文章详细解析了Seesaw Loss的数学原理,并提供了可直接集成到YOLO11的PyTorch实现代码,为长尾分布下的目标检测提供了实用解决方 阅读详情

相关推荐

银河麒麟v10(x86_64)升级openssh实操成功

本文详细介绍了在银河麒麟V10系统上将OpenSSH从8.2p1升级至9.9p2版本的全过程。主要内容包括:系统环境确认、安装telnet备用连接、备份配置、卸载旧版本、安装新版本、服务配置与验证等关键步骤。特别强调了安全注意事项,如必须安装telnet作为备用连接、重要配置备份等。升级后提供了安全加固建议,包括修改SSH端口、禁用root登录等。文章还包含详细的故障排查方法和恢复方案,确保升级过程安全可靠。通过本教程,用户可以顺利完成OpenSSH版本升级,提升系统安全性。

淘淘小窝 1089

《代码随想录(Carl)》 数据结构与算法 动态规划专题大总结

把《代码随想录(Carl)》动态规划专题的各分支每道题目的关键知识点做了注释!

u010894131的博客 357

python爬虫自动下载网页链接

需求分析 今天遇到一个简单的需求,需要下载澳大利亚电力市场NEM日前市场的发电商报价数据(http://nemweb.com.au/Reports/Current/Next_Day_Offer_Energy/),页面观感是这样的: Ctrl + F 一下,看到一共有395个zip链接。于是就想着用python爬虫自动下载。这个网页很简单,没有验证码,甚至不需要登录,因此自动下载的pytho...

da_kao_la的博客 1万+

代码随想录——动态规划

链接:https://leetcode.cn/problems/fibonacci-number/description/优化点在于只需要维护两个数,不知道为什么用vector比用数组快??本质上就是将石头分为两堆,两者之差尽可能小,所以将target/2,选的石头尽可能接近这个值,就满足条件。(要把这些问题转化为背包问题)

weixin_48956191的博客 2203

SAP 深入理解库存

当 某个期间发生货物移动的时候,系统在更新mard数据的之前(这个表是实时更新的),会检查此笔业务过账期间和mard里对应记录的期间是否一致,也就是 看这是不是本期间第一笔移动。其二,我们不能保证这定期的作业的确定性,硬件维护、系统性能都可能使这预定的“时刻”出现偏差,如果某一次没能抓取该时刻的库存,对整个报表来说,是数据的缺失;中,当某一期间(Period)的第一项操作更新了物料数量或价值,则SAP系统会向表MBEWH写入一条记录,以第一项操作之前的余额、价格控制为标准。这对于业务数据量大的。

matinal 當冬夜漸暖 。公众号:matinal 3620

凌欧通用FOC框架解析(5.程序环流程)

结构体:电流内环.这是一个结构体函数占空比13.

weixin_43756295的博客 2931

二刷代码随想录——动态规划day47

一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油!

qq_43264167的博客 550

立创开源4G+GPS定位系统:基于微信小程序的低成本低功耗追踪方案

本文介绍了一个基于立创开源平台的超小型4G+GPS定位系统方案。该方案采用28mm*28mm主板,集成4G Cat.1通信与GPS定位,通过微信小程序“点灯专家”实现远程追踪管理,具备低成本、低功耗、易于部署的特点,适用于电动车、宠物、资产追踪等多种场景。

weixin_28895791的博客 394

二刷代码随想录——动态规划day38

一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油!

qq_43264167的博客 482

Keil5与ARM编译器V5安装指南:从下载到配置全流程解析

本文提供Keil5与ARM Compiler V5的完整安装与配置指南。针对新版Keil5默认不包含V5编译器导致老工程编译失败的问题,详细解析了从软件下载、授权管理到获取并正确安装ARM Compiler V5(AC5)的全流程,确保开发者能顺利搭建兼容老项目的稳定开发环境。

weixin_29158047的博客 874

Qt | linux+openCV+Qt6.5.3环境搭建成功版(带例子)

opencv安装 Qt 实战举例

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 1885

《代码随想录》动态规划专题算法笔记(上)

LeetCode 1049] 最后一块石头的重量 II问题类型dp定义递推公式遍历顺序初始化求最大价值(01背包)dp[j]: 容量j的最大价值物品→背包(倒序)dp[0]=0求最小数量dp[j]: 凑成j的最少物品数任意dp[0]=0, 其余INF求组合数dp[j]: 凑成j的方法数物品→背包(正序)dp[0]=1求排列数dp[j]: 凑成j的排列数背包→物品(正序)dp[0]=1。

weixin_62906774的博客 744

微信小程序- 云开发上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。(小程序上传部署云函数提示错误,开发控制台中的云函数没有删除,详细排查)

微信小程序——云函数上传失败,微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。微信小程序上传云函数失败,微信小程序云开发|Error: ResourceNotFound.FunctionName, FunctionName 指定的资源不存在。微信云开发报错(Error: ResourceNotFound.FunctionName,微信小程序云函数报错,上传云函数 sum 失败 Error:,上传部署我们的云函数 2. 报错 错误信息

🏆 前端领域优质创作者 4315

【代码随想录】动态规划

2.dp表达式,不用管之前的是否有障碍物即dp[i-1][j],dp[i][j-1], 只需要保证当前计算的dp[i][j]是没有障碍物的。dp[i][j]=dp[i-1][j]+dp[i][j-1]. dp[i][j]可以表示为dp[i-1][j]向下移动一格,或者是dp[i][j-1]向右移动一格。dp[i-j](这里dp[i-j]表示分解数字i-j,得到的最大乘积为dp[i-j]也就是基于之前得到的结果进行的)初始化:dp[0][0]=0 dp[0][1]=1;dp[1][0]=1;

qq_41882808的博客 1082

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

二刷代码随想录——动态规划day57

一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油!

qq_43264167的博客 689

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【代码随想录Day33】动态规划Part02

【代码】【代码随想录Day33】动态规划Part02。

Shayne 的博客 685

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

代码随想录-动态规划篇-01(01背包)

【代码】代码随想录-动态规划篇-01(01背包)

weixin_51602120的博客 286

代码随想录一刷之动态规划篇(一刷完结)

代码随想录一刷之动态规划篇(一刷完结)

weixin_45112748的博客 222

代码随想录-动态规划【总结】

代码随想录-动态规划

upward 919

代码随想录算法训练57 | 动态规划part17_总结篇_647、516、总结

647. 回文子串,求的是回文子串,而本题要求的是回文子序列, 大家要搞清楚两者之间的区别。动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。516.最长回文子序列。

Hello__Word___的博客 481

代码随想录_动态规划

1049. 最后一块石头的重量 II有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。如果x == y,那么两块石头都会被完全粉碎;如果x!= y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回0。

kiddkid的博客 1476

代码随想录动态规划

509. 斐波那契数很简单的动规入门题,但简单题使用来掌握方法论的,还是要有动规五部曲来分析。(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(n) = F(n - 1) + F(n - 2),其中 n > 1给定n,请计算F(n)。时间复杂度:O(n) 空间复杂度:O(n)时间复杂度:O(n) 空间复杂度:O(1)

xiangjiaonigebun的博客 797

代码随想录:动态规划系列--70. 爬楼梯,简单

【代码】代码随想录:动态规划系列--70. 爬楼梯,简单。

weixin_51243388的博客 169

代码随想录:动态规划问题

这道题的核心还是转换到将所有石头分成重量最接近的两堆,两堆之差就是最终剩下石头的最小可能重量。只要这一步思路通了,就没什么问题了。public://首先考虑的是把它转化为动态规划问题,更具体一点,先考虑转化为01背包问题//丝毫没有一丁点思路,直接看代码随想录的解析//代码随想录真的是一点就通:这道题本质就是将所有石头分成重量最接近的两堆,两堆之差就是最终剩下石头的最小可能重量//先求和i++) {//背包的最大容量如何设置呢?sum/2?

Hello_Hamburger的博客 1120

代码随想录算法训练营第34天 | 第九章动态规划 part07

第九章 动态规划 Part 07 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III

zxjiaya的博客 1290
上一篇: 【代码随想录|贪心算法05】
下一篇: 【代码随想录|动态规划02】
mazo_command
博客等级 码龄2年 275粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值