L564 Backpack VI
Given an integer arraynums
with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integertarget
.
Notice
The different sequences are counted as different combinations.
Example
Given nums =[1, 2, 4]
, target =4
return6
这题跟前面的那些背包有些不一样。也可以用记忆化搜索来做。
求以1开头的,用【1,2,4】组成 4 - 1 = 3的方法数目
求以2开头的,用【1,2,4】组成 4 - 2 = 2的方法数目
求以4开头的,用【1,2,4】组成 4 - 4 = 0的方法数目
用dfs求解的时候,我们会发现有重复子问题。
eg. dfs(4) = dfs(4 -1) + dfs(4 - 2) + dfs(4 - 4)
= dfs(3) + dfs(2) + dfs(0)
= dfs(3 - 1) + dfs(3 - 2) + dfs(2) + dfs(0)
= dfs(2) + dfs(1) + dfs(2) + dfs(0)
Last updated