代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)

52.携带研究材料(卡码网)

题目链接

携带研究材料https://kamacoder.com/problempage.php?pid=1052

核心思路

1,确定dp数组及其下标含义

定义一个一维dp数组,下标表示背包大小。

2,确定递推公式

因为完全背包的物品是无限个,所以放完了一个,还能在同一层找。

二维递推公式写法:dp[ i ][ j ] = max(dp[ i - 1 ][ j ] , dp[ i ][ j - w[ i ] ] + v[ i ] )

一维递推公式写法:dp[ j ] = max(dp[ j ] , dp[ j - w[ i ] ] + v [ i ] )

4,初始化数组

全部为0

3,确定循环顺序

因为完全背包物品有无限个,所以遍历背包可以正序遍历,这样正好默认是在同一层

易错点

一维递推公式写法:dp[ j ] = max(dp[ j ] , dp[ j - w[ i ] ] + v [ i ] )

518.零钱兑换||

题目链接

零钱兑换||https://leetcode.cn/problems/coin-change-ii/description/

核心思路

1,定义一维dp数组,dp[ j ] 为填满背包大小为 j 的背包的组合数有dp [ j ]种。

2,确定递推公式

因为求的是方法有多少种,所以用累加的形式:

dp[ j ] = dp[ j ] + dp[ j - w[ i ] ];

表示填满当前背包有两种来源:

不放物品 i ,那么就是dp[ j ]。

放物品 i ,那么就是dp[ j - w[ i ] ]。

3,初始化dp数组

dp[0] = 1;

4,确定遍历方向

先遍历物品,再遍历背包。背包是正序遍历

易错点

1,背包大小要从w[ i ]开始,放不进就默认dp [ j ]

2,dp数组的类型为unsigned long long

377.组合总和IV

题目链接

组合总和IVhttps://leetcode.cn/problems/combination-sum-iv/description/

核心思路

1,定义一个一维dp数组,dp[ j ] 表示当背包为 j 时,排列数为多少个

2,确定递推公式dp[ j ] = dp[ j ] + dp[ j - w[ i ] ];

3,初始化dp数组

dp[ 0 ] = 0

4,确定遍历顺序

因为求的是排列数,对顺序有要求,那我们就考虑填满每个背包大小的最后一个值是什么。因为每个背包大小都要考虑,所以物品在内层循环。

易错点

1,dp数组的类型为unsigned long long

2,遍历顺序为,背包在外,物品在内

57.爬楼梯(卡码网)

题目链接

爬楼梯(卡码网)https://kamacoder.com/problempage.php?pid=1067

核心思路

1,确定一维dp数组及其下标含义

dp[ j ] 表示爬上台阶为 j 总共有 dp[ j ]种方法

2,推导递推公式dp[ j ] = dp[ j ] + dp[ j - w[ i ] ];

3,初始化数组

dp[0] = 0

4,确定遍历顺序

因为是排列数,所以物品放内,背包放外

易错点

1,台阶个数是背包大小,一次可以爬多少个台阶是物品。

2,初始化了台阶个数为0时的方法,所以背包从1开始

3,物品从1开始,小于等于m。

相关推荐
小O的算法实验室17 小时前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
郭涤生18 小时前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
༾冬瓜大侠༿19 小时前
vector
c语言·开发语言·数据结构·c++·算法
Ricky111zzz19 小时前
leetcode学python记录1
python·算法·leetcode·职场和发展
汀、人工智能19 小时前
[特殊字符] 第58课:两个正序数组的中位数
数据结构·算法·数据库架构··数据流·两个正序数组的中位数
liu****19 小时前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯
汀、人工智能19 小时前
[特殊字符] 第79课:分割等和子集
数据结构·算法·数据库架构·位运算·哈希表·分割等和子集
汀、人工智能19 小时前
[特殊字符] 第74课:完全平方数
数据结构·算法·数据库架构·图论·bfs·完全平方数
CoderCodingNo19 小时前
【GESP】C++四、五级练习题 luogu-P1177 【模板】排序
数据结构·c++·算法
Proxy_ZZ019 小时前
从零实现LDPC比特翻转译码器:C语言实战与底层逻辑解析
c语言·算法