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.
思路:找到子问题为:target减少的时候一共有多少中排列方式。对于target有多少种排列方式,就是将所有可能组成的target*的排列个数相加。注意我们认为target为0时有1中个排列方式,这是用于排列数和target相等的情况。
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
int result[target + 1];
for (int i = 0; i < target + 1; i++) {
result[i] = 0;
}
result[0] = 1;
for (int i = 1; i < target + 1; i++) {
for (int j = 0; j < nums.size(); j++) {
if (nums[j] <= i) {
result[i] += result[i - nums[j]];
}
}
}
return result[target];
}
};