Merge pull request #954 from gaoyangu/master

修改416. 分割等和子集 和 494. 目标和 里动规五部曲步骤1中 i 和 j 的错误使用
This commit is contained in:
程序员Carl
2021-12-20 22:29:49 +08:00
committed by GitHub
3 changed files with 5 additions and 5 deletions

View File

@@ -77,9 +77,9 @@
1. 确定dp数组以及下标的含义
01背包中,dp[i] 表示: 容量为j的背包,所背的物品价值可以最大为dp[j]。
01背包中,dp[j] 表示: 容量为j的背包,所背的物品价值可以最大为dp[j]。
**套到本题,dp[i]表示 背包总容量是i,最大可以凑成i的子集总和为dp[i]**。
**套到本题,dp[j]表示 背包总容量是j,最大可以凑成j的子集总和为dp[j]**。
2. 确定递推公式

View File

@@ -146,7 +146,7 @@ if (abs(S) > sum) return 0; // 此时没有方案
1. 确定dp数组以及下标的含义
dp[j] 表示:填满j(包括j)这么大容积的包,有dp[i]种方法
dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法
其实也可以使用二维dp数组来求解本题,dp[i][j]:使用 下标为[0, i]的nums[i]能够凑满j(包括j)这么大容量的包,有dp[i][j]种方法。

View File

@@ -10,11 +10,11 @@ S 和 sum都是固定的,那此时问题就转化为01背包问题(数列中
1. 确定dp数组以及下标的含义
**dp[j] 表示:填满j(包括j)这么大容积的包,有dp[i]种方法**
**dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法**
2. 确定递推公式
dp[i] += dp[j - nums[j]]
dp[j] += dp[j - nums[i]]
**注意:求装满背包有几种方法类似的题目,递推公式基本都是这样的**。