题目:
分析:
典型的无限背包问题。
自己写出来了,还行,加深理解啦!!!多想几遍。
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
vector<int> v(target+1,0);
v[0]=1;
for(int i=0;i<nums.size();i++)
{
for(int j=nums[i];j<=target;j++)
{
v[j]+=v[j-nums[i]];
}
}
for(int i=)
return v[target];
}
};
但是忽略了无序。
秒了一眼答案,很好的思路,要结合上面的代码细细品品:
class Solution:
def combinationSum4(self, nums: List[int], target: int) -> int:
if not nums:
return 0
dp = [0] * (target+1)
dp[0] = 1
for i in range(1,target+1):
for num in nums:
if i >= num:
dp[i] += dp[i-num]
return dp[target]
妈耶!我用c++咋一直报错:?????
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
vector<> v(target+1,0);
v[0]=1;
for(int j=1;j<=target;j++)
{
for(int i=0;i<nums.size();i++)
{
if(j>=nums[i]) v[j]+=v[j-nums[i]];
}
}
return v[target];
}
};