This commit is contained in:
youngyangyang04
2022-02-28 20:52:01 +08:00
parent 266702c291
commit 37e7d73ec2
42 changed files with 64 additions and 60 deletions

View File

@ -160,11 +160,16 @@ dp[j] 表示填满j包括j这么大容积的包有dp[j]种方法
那么只要搞到nums[i]的话凑成dp[j]就有dp[j - nums[i]] 种方法。
举一个例子,nums[i] = 2 dp[3]填满背包容量为3的话有dp[3]种方法。
那么只需要搞到一个2nums[i]有dp[3]方法可以凑齐容量为3的背包相应的就有多少种方法可以凑齐容量为5的背包。
例如dp[j]j 为5
那么需要把 这些方法累加起来就可以了dp[j] += dp[j - nums[i]]
* 已经有一个1nums[i] 的话,有 dp[4]种方法 凑成 dp[5]。
* 已经有一个2nums[i] 的话,有 dp[3]种方法 凑成 dp[5]。
* 已经有一个3nums[i] 的话,有 dp[2]中方法 凑成 dp[5]
* 已经有一个4nums[i] 的话,有 dp[1]中方法 凑成 dp[5]
* 已经有一个5 nums[i])的话,有 dp[0]中方法 凑成 dp[5]
那么凑整dp[5]有多少方法呢,也就是把 所有的 dp[j - nums[i]] 累加起来。
所以求组合类问题的公式,都是类似这种: