原题题目
代码实现(首刷自解)
int findTargetSumWays(int* nums, int numsSize, int S){
int dp[20][2001],i,j;
if(S > 1000 || S < -1000)
return 0;
for(i=0;i<numsSize;i++)
{
memset(dp[i],0,sizeof(dp[i]));
if(!i)
{
if(nums[i])
dp[i][1000+nums[i]] = dp[i][1000-nums[i]] = 1;
else
dp[i][1000] = 2;
continue;
}
for(j=0;j<=2000;j++)
{
if(dp[i-1][j])
{
dp[i][j+nums[i]] += dp[i-1][j];
dp[i][j-nums[i]] += dp[i-1][j];
}
}
}
return dp[numsSize-1][S+1000];
}