494.目标和
一开始不会做,一种心的dp推导公式
class Solution {
public:
int findTargetSumWays(vector<int>& nums, int target) {
int sum = 0;
for (int i = 0; i < nums.size(); i ++ ) {
sum += nums[i];
}
int left = (target + sum);
if (left & 1) return 0;
left = left >> 1;
vector<int>dp(left+1);
dp[0] = 1;
// dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法
for ( int i = 0; i < nums.size() ; i ++ ) {
for (int j = dp.size() - 1; j >= nums[i] ; j -- ) {
dp[j] += dp[j-nums[i]];
}
}
return dp[left];
}
};