leetcode 377. Combination Sum IV
给你一个没有重复的正整数数组,再给你一个目标数,问你有多少种相加的方法得到这么目标。
简单动态规划题,dp[i]表示能构成i这个目标的方法数,
如果i-j能在正整数数组找到,dp[i]就可以由dp[j]+1得到。
初始化dp[0]=1,
搞定!
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
vector<int> dp(target+1, 0);
dp[0] = 1;
for (int i = 1; i <= target; i++)
for (int j = 0; j < nums.size(); j++)
if(i-nums[j]>=0)
dp[i]+=dp[i - nums[j]];
return dp[target];
}
};
好奇怪啊,大家都是用dp写的,为什么我的dp这么慢?