【题目描述】
Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target.
Example:
nums = [1, 2, 3] target = 4 The possible combination ways are: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1) Note that different sequences are counted as different combinations. Therefore the output is 7.
【解题思路】
dp水题~有点类似之前的台阶问题
【代码】
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
int sz = nums.size();
if(sz==0) return 0;
int cnt[target+1]={0};
cnt[0]=1;
sort(nums.begin(),nums.end());
for(int i=1;i<=target;i++){
for(int j=0;j<sz;j++){
if(i<nums[j]) break;
cnt[i]+=cnt[i-nums[j]];
}
}
return cnt[target];
}
};