- 博客(3)
- 收藏
- 关注
原创 动态规划解决堆箱子问题:从原理到代码实现
堆箱子问题的经典描述为:给定一组长方体箱子,每个箱子都有三个维度(长、宽、高),我们需要将这些箱子堆叠起来,且满足以下两个条件:上方箱子的长、宽必须严格小于下方箱子的长、宽(确保箱子能稳定放置,不考虑旋转箱子的情况);堆叠的目标是使总高度最大。举个简单例子:若有两个箱子,箱子A(2,3,4)、箱子B(1,2,3),则B可以放在A上方,总高度为4+3=7,这是最优解。若存在箱子C(3,4,5),则最优堆叠为C→A→B,总高度5+4+3=12。
2025-12-13 10:15:00
1200
原创 吃透动态规划:从原理到实战,告别算法恐惧
状态定义是动态规划的核心,也是最容易出错的一步。我们需要用一个数组(或变量)来表示“子问题的答案”,这个数组就叫dp数组,其中dp[i]代表的含义就是“状态”。dp[i] = 爬到第i阶楼梯的不同方法数。很多人拿到题后直接想“递推公式”,却忽略了状态定义。如果dp[i]的含义不明确,后续的转移方程必然出错。解决办法:先把“dp[i]代表什么”写在纸上,确保符合子问题的逻辑。把复杂的原问题拆解成多个重复的子问题,记住子问题的答案,再通过子问题的最优解组合出原问题的解。
2025-12-09 09:00:00
720
原创 数据结构与算法心得体会及堆箱子实现
dp[i]表示以第 i 个箱子为最顶层箱子时,能够堆叠的最大高度。转移方程:对于第 i 个箱子,遍历所有 j < i 的箱子,若第 j 个箱子的长 < 第 i 个箱子的长且第 j 个箱子的宽 < 第 i 个箱子的宽(满足堆叠约束),则。(每个箱子单独堆叠时,高度为自身高度)。(遍历所有箱子作为顶层的情况,取最大高度)。数据结构与算法二的学习,不仅提升了我的编程能力和逻辑思维,更让我明白:算法不是 “天书”,而是解决问题的 “思维工具”。
2025-12-07 23:13:40
915
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅