Leetcode 494. 目标和(DAY 43) ---- 动态规划学习期

原题题目

在这里插入图片描述



代码实现(首刷自解)

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];
}

猜你喜欢

转载自blog.csdn.net/qq_37500516/article/details/113768924