494. Target Sum
https://leetcode.com/problems/target-sum/description/
Thoughts
Code
/*
* @lc app=leetcode id=494 lang=cpp
*
* [494] Target Sum
*/
// @lc code=start
class Solution {
public:
int findTargetSumWays(vector<int>& nums, int S) {
const int N = nums.size(), sum = accumulate(nums.begin(), nums.end(), 0);
if (sum < S || (sum + S) % 2 != 0) return 0;
const int V = (sum + S) / 2;
vector<int> dp(V + 1, 0);
for (int i = 0; i <= N; ++i) dp[0] = 1;
for (int i = 1; i <= N; ++i) {
for (int j = V; j >= 0; --j) {
dp[j] += (j >= nums[i - 1]) ? dp[j - nums[i - 1]] : 0;
}
}
return dp[V];
}
};
// @lc code=end
Last updated