https://leetcode.cn/circle/discuss/KPsfIC/
class Solution {
public int findTargetSumWays(int[] nums, int target) {
int sum = 0,n = nums.length;
for(int i = 0;i < n;i++)
sum += nums[i];
if(Math.abs(sum) < Math.abs(target))
return 0;
int[][] f = new int[n+1][2 * sum + 1];
int offset = sum;
f[0][offset] = 1;
for(int i = 1;i <= n;i++){
for(int j = -sum;j <= sum; j++){
if(j - nums[i-1] >= -sum)
f[i][j + offset] += f[i-1][j - nums[i-1] + offset];
if(j + nums[i-1] <= sum)
f[i][j + offset] += f[i-1][j + nums[i-1] + offset];
}
}
return f[n][target + offset];
}
}