问:
原题链接:目标和
答:
class Solution {
public int findTargetSumWays(int[] nums, int target) {
int sum = 0;
for(int num:nums)
{
sum += num;
}
int dif = sum - target;
if(dif%2 != 0 || dif < 0)
{
return 0;
}
int len = nums.length;
int n = dif / 2;
int[][] dp = new int[len+1][n+1];
dp[0][0] = 1;
for(int i = 1;i <= len;i++)
{
int num = nums[i-1];
for(int j = 0;j <= n;j++)
{
dp[i][j] = dp[i-1][j];
if(j >= num)
{
dp[i][j] += dp[i-1][j-num];
}
}
}
return dp[len][n];
}
}