Target Sum(C++目标和)
(1) dp
class Solution {
public:
int findTargetSumWays(vector<int>& nums, int t) {
int sum=0;
for(int i=0;i<nums.size();i++) {
sum+=nums[i];
}
int target=sum-t;
if(target<0 || target%2==1) return 0;
target/=2;
vector<vector<int>> v(target+1,vector<int>(nums.size()+1,0));
v[0][0]=1;
for(int i=0;i<target+1;i++) {
for(int j=1;j<nums.size()+1;j++) {
if(i>=nums[j-1]) {
v[i][j]=v[i][j-1]+v[i-nums[j-1]][j-1];
} else v[i][j]=v[i][j-1];
}
}
return v[target][nums.size()];
}
};
还没有评论,来说两句吧...