This commit is contained in:
krahets
2023-07-16 04:19:01 +08:00
parent 54b99d13c8
commit dbf682ebc9
110 changed files with 25308 additions and 10305 deletions

View File

@@ -25,7 +25,7 @@
<title>13.5.   完全背包问题New - Hello 算法</title>
<title>14.5.   完全背包问题New - Hello 算法</title>
@@ -79,7 +79,7 @@
<div data-md-component="skip">
<a href="#135" class="md-skip">
<a href="#145" class="md-skip">
跳转至
</a>
@@ -113,7 +113,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
13.5. &nbsp; 完全背包问题New
14.5. &nbsp; 完全背包问题New
</span>
</div>
@@ -1771,6 +1771,87 @@
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_divide_and_conquer/">12. &nbsp; &nbsp; 分治</a>
<label for="__nav_13">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
12. &nbsp; &nbsp; 分治
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_divide_and_conquer/divide_and_conquer/" class="md-nav__link">
12.1. &nbsp; 分治算法New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_divide_and_conquer/build_binary_tree/" class="md-nav__link">
12.2. &nbsp; 构建树问题New
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" >
@@ -1782,18 +1863,18 @@
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_backtracking/">12. &nbsp; &nbsp; 回溯</a>
<a href="../../chapter_backtracking/">13. &nbsp; &nbsp; 回溯</a>
<label for="__nav_13">
<label for="__nav_14">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_14">
<span class="md-nav__icon md-icon"></span>
12. &nbsp; &nbsp; 回溯
13. &nbsp; &nbsp; 回溯
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1806,7 +1887,7 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
12.1. &nbsp; 回溯算法
13.1. &nbsp; 回溯算法
</a>
</li>
@@ -1820,7 +1901,7 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/permutations_problem/" class="md-nav__link">
12.2. &nbsp; 全排列问题
13.2. &nbsp; 全排列问题
</a>
</li>
@@ -1834,7 +1915,7 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/subset_sum_problem/" class="md-nav__link">
12.3. &nbsp; 子集和问题
13.3. &nbsp; 子集和问题
</a>
</li>
@@ -1848,7 +1929,7 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/n_queens_problem/" class="md-nav__link">
12.4. &nbsp; N 皇后问题
13.4. &nbsp; N 皇后问题
</a>
</li>
@@ -1862,7 +1943,7 @@
<li class="md-nav__item">
<a href="../../chapter_backtracking/summary/" class="md-nav__link">
12.5. &nbsp; 小结
13.5. &nbsp; 小结
</a>
</li>
@@ -1890,7 +1971,7 @@
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" checked>
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" checked>
@@ -1917,18 +1998,18 @@
<div class="md-nav__link md-nav__link--index ">
<a href="../">13. &nbsp; &nbsp; 动态规划</a>
<a href="../">14. &nbsp; &nbsp; 动态规划</a>
<label for="__nav_14">
<label for="__nav_15">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_14">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
13. &nbsp; &nbsp; 动态规划
14. &nbsp; &nbsp; 动态规划
</label>
<ul class="md-nav__list" data-md-scrollfix>
@@ -1941,7 +2022,7 @@
<li class="md-nav__item">
<a href="../intro_to_dynamic_programming/" class="md-nav__link">
13.1. &nbsp; 初探动态规划New
14.1. &nbsp; 初探动态规划New
</a>
</li>
@@ -1955,7 +2036,7 @@
<li class="md-nav__item">
<a href="../dp_problem_features/" class="md-nav__link">
13.2. &nbsp; DP 问题特性New
14.2. &nbsp; DP 问题特性New
</a>
</li>
@@ -1969,7 +2050,7 @@
<li class="md-nav__item">
<a href="../dp_solution_pipeline/" class="md-nav__link">
13.3. &nbsp; DP 解题思路New
14.3. &nbsp; DP 解题思路New
</a>
</li>
@@ -1983,7 +2064,7 @@
<li class="md-nav__item">
<a href="../knapsack_problem/" class="md-nav__link">
13.4. &nbsp; 0-1 背包问题New
14.4. &nbsp; 0-1 背包问题New
</a>
</li>
@@ -2006,12 +2087,12 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
13.5. &nbsp; 完全背包问题New
14.5. &nbsp; 完全背包问题New
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
13.5. &nbsp; 完全背包问题New
14.5. &nbsp; 完全背包问题New
</a>
@@ -2030,22 +2111,22 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1351" class="md-nav__link">
13.5.1. &nbsp; 完全背包问题
<a href="#1451" class="md-nav__link">
14.5.1. &nbsp; 完全背包问题
</a>
</li>
<li class="md-nav__item">
<a href="#1352" class="md-nav__link">
13.5.2. &nbsp; 零钱兑换问题
<a href="#1452" class="md-nav__link">
14.5.2. &nbsp; 零钱兑换问题
</a>
</li>
<li class="md-nav__item">
<a href="#1353-ii" class="md-nav__link">
13.5.3. &nbsp; 零钱兑换问题 II
<a href="#1453-ii" class="md-nav__link">
14.5.3. &nbsp; 零钱兑换问题 II
</a>
</li>
@@ -2066,7 +2147,7 @@
<li class="md-nav__item">
<a href="../edit_distance_problem/" class="md-nav__link">
13.6. &nbsp; 编辑距离问题New
14.6. &nbsp; 编辑距离问题New
</a>
</li>
@@ -2080,76 +2161,7 @@
<li class="md-nav__item">
<a href="../summary/" class="md-nav__link">
13.7. &nbsp; 小结New
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" >
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
14. &nbsp; &nbsp; 附录
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
14. &nbsp; &nbsp; 附录
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
14.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
14.2. &nbsp; 一起参与创作
14.7. &nbsp; 小结New
</a>
</li>
@@ -2180,6 +2192,75 @@
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
15. &nbsp; &nbsp; 附录
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
15. &nbsp; &nbsp; 附录
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
15.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
15.2. &nbsp; 一起参与创作
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_17" >
@@ -2192,8 +2273,8 @@
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_17">
<span class="md-nav__icon md-icon"></span>
参考文献
</label>
@@ -2234,22 +2315,22 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#1351" class="md-nav__link">
13.5.1. &nbsp; 完全背包问题
<a href="#1451" class="md-nav__link">
14.5.1. &nbsp; 完全背包问题
</a>
</li>
<li class="md-nav__item">
<a href="#1352" class="md-nav__link">
13.5.2. &nbsp; 零钱兑换问题
<a href="#1452" class="md-nav__link">
14.5.2. &nbsp; 零钱兑换问题
</a>
</li>
<li class="md-nav__item">
<a href="#1353-ii" class="md-nav__link">
13.5.3. &nbsp; 零钱兑换问题 II
<a href="#1453-ii" class="md-nav__link">
14.5.3. &nbsp; 零钱兑换问题 II
</a>
</li>
@@ -2277,9 +2358,9 @@
<h1 id="135">13.5. &nbsp; 完全背包问题<a class="headerlink" href="#135" title="Permanent link">&para;</a></h1>
<h1 id="145">14.5. &nbsp; 完全背包问题<a class="headerlink" href="#145" title="Permanent link">&para;</a></h1>
<p>在本节,我们先求解 0-1 背包的一个变种问题:完全背包问题;再了解完全背包的一种特例问题:零钱兑换。</p>
<h2 id="1351">13.5.1. &nbsp; 完全背包问题<a class="headerlink" href="#1351" title="Permanent link">&para;</a></h2>
<h2 id="1451">14.5.1. &nbsp; 完全背包问题<a class="headerlink" href="#1451" title="Permanent link">&para;</a></h2>
<div class="admonition question">
<p class="admonition-title">Question</p>
<p>给定 <span class="arithmatex">\(n\)</span> 种物品,第 <span class="arithmatex">\(i\)</span> 个物品的重量为 <span class="arithmatex">\(wgt[i-1]\)</span> 、价值为 <span class="arithmatex">\(val[i-1]\)</span> ,现在有个容量为 <span class="arithmatex">\(cap\)</span> 的背包,<strong>每种物品可以重复选取</strong>,问在不超过背包容量下背包中物品的最大价值。</p>
@@ -2559,7 +2640,7 @@ dp[i, c] = \max(dp[i-1, c], dp[i, c - wgt[i-1]] + val[i-1])
</div>
</div>
</div>
<h2 id="1352">13.5.2. &nbsp; 零钱兑换问题<a class="headerlink" href="#1352" title="Permanent link">&para;</a></h2>
<h2 id="1452">14.5.2. &nbsp; 零钱兑换问题<a class="headerlink" href="#1452" title="Permanent link">&para;</a></h2>
<p>背包问题是一大类动态规划问题的代表,其拥有很多的变种,例如零钱兑换问题。</p>
<div class="admonition question">
<p class="admonition-title">Question</p>
@@ -2905,7 +2986,7 @@ dp[i, a] = \min(dp[i-1, a], dp[i, a - coins[i-1]] + 1)
</div>
</div>
</div>
<h2 id="1353-ii">13.5.3. &nbsp; 零钱兑换问题 II<a class="headerlink" href="#1353-ii" title="Permanent link">&para;</a></h2>
<h2 id="1453-ii">14.5.3. &nbsp; 零钱兑换问题 II<a class="headerlink" href="#1453-ii" title="Permanent link">&para;</a></h2>
<div class="admonition question">
<p class="admonition-title">Question</p>
<p>给定 <span class="arithmatex">\(n\)</span> 种硬币,第 <span class="arithmatex">\(i\)</span> 个硬币的面值为 <span class="arithmatex">\(coins[i - 1]\)</span> ,目标金额为 <span class="arithmatex">\(amt\)</span> ,每种硬币可以重复选取,<strong>问在凑出目标金额的硬币组合数量</strong></p>
@@ -3249,7 +3330,7 @@ dp[i, a] = dp[i-1, a] + dp[i, a - coins[i-1]]
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../knapsack_problem/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 13.4. &amp;nbsp; 0-1 背包问题New" rel="prev">
<a href="../knapsack_problem/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 14.4. &amp;nbsp; 0-1 背包问题New" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
@@ -3258,20 +3339,20 @@ dp[i, a] = dp[i-1, a] + dp[i, a - coins[i-1]]
上一页
</span>
<div class="md-ellipsis">
13.4. &nbsp; 0-1 背包问题New
14.4. &nbsp; 0-1 背包问题New
</div>
</div>
</a>
<a href="../edit_distance_problem/" class="md-footer__link md-footer__link--next" aria-label="下一页: 13.6. &amp;nbsp; 编辑距离问题New" rel="next">
<a href="../edit_distance_problem/" class="md-footer__link md-footer__link--next" aria-label="下一页: 14.6. &amp;nbsp; 编辑距离问题New" rel="next">
<div class="md-footer__title">
<span class="md-footer__direction">
下一页
</span>
<div class="md-ellipsis">
13.6. &nbsp; 编辑距离问题New
14.6. &nbsp; 编辑距离问题New
</div>
</div>
<div class="md-footer__button md-icon">