| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 动态规划 学习笔记 -> 正文阅读 |
|
[数据结构与算法]动态规划 学习笔记 |
1.动态规划步骤(1)确定dp数组以及下标的含义 2. 一维dp数组做题记录做题由简到难记录 入门/简单题爬楼梯(1)确定dp[i]含义
(2) 确定递推公式
(3)初始化dp[i] (4)确定遍历顺序 此题遍历顺序比较简单,将1~N每级阶梯遍历一次即可 (5)举例推导 纸上画一下dp表对应比照一下 (6)写出代码
使用最小花费爬楼梯
(2)确定递推公式 dp[i] = Math.min(dp[i-1],dp[i-2])+cost[i] 说明:当前阶梯花费最少体力值= 能跳上该阶梯时的最少体力值+当前阶梯花费的体力值 (3)dp初始化 dp[0] = cost[0]; (4)确定遍历顺序 同样将所有阶梯遍历一遍 (5)举例推导dp数组 画图举例 (6)写代码
中等题打家劫舍(1)确定dp[i]的含义
(2)确定推导公式
(3)dp初始化 (4)确定遍历顺序 对每个房间遍历一次 (5)举例推导dp数组 画图得证 (6)写出代码
打家劫舍 II做法和打家劫舍1差不多。区别只是区分一下房间1选择和不选择的两种情况,分别计算值,取最大值作为结果
by ruoxi 8.4 删除并获得点数
首先,我们先明确一个概念,就是每个位置上的数字是可以在两种前结果之上进行选择的: 如果你不删除当前位置的数字,那么你得到就是前一个数字的位置的最优结果。 上述的每个位置上的数字,指的是像存储1,2,3,4,5这种自然数个数的数组 那么可以创建一个count[]数组,用于存储每个自然数在nums[]中出现的次数 count的长度=nums[]数组中的最大值(max) 比如nums[] = {1,1,2,3,3,3},那么count[]={0,2,1,3} (1)明确dp[i]的含义
这里的dp[i]长度也就等于count的长度,因为dp[i]是选择自然数i,count存储的是自然数i出现的次数 (2)找出递推公式
(3)初始化dp (4)确定遍历顺序 对count[]数组遍历一遍即可 (5)举例推导dp数组 画图举例得证 (6)写代码
持续更新中… |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:37:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |