题目来源
给一个数组及一个target,求数组元素和为target的所有数目。
一开始想着直接深搜,后来看看不太行,超时,看了下tags,对啊,傻逼了,可以用DP啊,然后就用了DP,代码如下:
class Solution {
public:
int combinationSum4(vector& nums, int target) {
vector dp(target+1, -1);
dp[0] = 1;
return dfs(nums, target, dp);
}
int dfs(vector& nums, int target, vector& dp)
{
if (dp[target] != -1)
return dp[target];
int len = nums.size();
int res = 0;
for (int i=0; i= nums[i])
res += dfs(nums, target-nums[i], dp);
dp[target] = res;
return res;
}
};