class Solution {
public:
int findTargetSumWays(vector<int>& nums, int S) {
if(S<-1000 || S>1000) return 0;
int f[25][2010] = {
0}, n = nums.size();
f[0][map(nums[0])] += 1;
f[0][map(-nums[0])] += 1;
for(int i=1;i<n;i++){
for(int s = nums[i];s<=2000;s++){
f[i][s] += f[i-1][s-nums[i]];
}
for(int s = 0;s<=2000-nums[i];s++){
f[i][s] += f[i-1][s+nums[i]];
}
}
return f[n-1][map(S)];
}
int map(int n){
return n+1000;
}
};
LeetCode 494. 目标和 (计数DP、01背包DP变种)
猜你喜欢
转载自blog.csdn.net/qq_44846324/article/details/108934307
今日推荐
周排行