mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2026-02-02 18:39:09 +08:00
替换图片链接
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
|
||||
推导方向如图:
|
||||
|
||||

|
||||

|
||||
|
||||
如果放物品1, **那么背包要先留出物品1的容量**,目前容量是4,物品1 的容量(就是物品1的重量)为3,此时背包剩下容量为1。
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
所以 放物品1 的情况 = dp[1][1] + 物品1 的价值,推导方向如图:
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
(**注意上图和 [01背包理论基础(二维数组)](https://programmercarl.com/背包理论基础01背包-1.html) 中的区别**,对于理解完全背包很重要)
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
首先从dp[i][j]的定义出发,如果背包容量j为0的话,即dp[i][0],无论是选取哪些物品,背包价值总和一定为0。如图:
|
||||
|
||||

|
||||

|
||||
|
||||
在看其他情况。
|
||||
|
||||
@@ -132,7 +132,7 @@ for (int j = weight[0]; j <= bagWeight; j++)
|
||||
|
||||
此时dp数组初始化情况如图所示:
|
||||
|
||||

|
||||

|
||||
|
||||
dp[0][j] 和 dp[i][0] 都已经初始化了,那么其他下标应该初始化多少呢?
|
||||
|
||||
@@ -185,7 +185,7 @@ for(int j = 0; j <= bagWeight; j++) { // 遍历背包容量
|
||||
|
||||
以本篇举例数据为例,填满了dp二维数组如图:
|
||||
|
||||

|
||||

|
||||
|
||||
因为 物品0 的性价比是最高的,而且 在完全背包中,每一类物品都有无限个,所以有无限个物品0,既然物品0 性价比最高,当然是优先放物品0。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user