class Solution {
public int combinationSum4(int[] nums, int target) {
// 1.确定dp数组 dp[j] 代表装满容量为j的背包有dp[j]种方案
int[] dp = new int[target+1];
// 2.递推关系 dp[j] = dp[j] + dp[j-nums[i]];
// 3.初始化
dp[0] = 1;
// 4.遍历顺序 求排列,先遍历背包,后遍历物品
for(int j=0; j<=target; j++){
for(int i=0; i<nums.length; i++){
if(j >= nums[i]){
dp[j] = dp[j] + dp[j-nums[i]];
}
}
}
return dp[target];
}
}
运行结果: