【动态规划】494. 目标和

class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int target) {
        int sum = target;
        for_each(begin(nums), end(nums), [&sum](int x){
            sum += x;
        });
        if(sum % 2)
            return 0;
        sum /= 2;
        sum = sum > 0 ? sum : sum * -1;
        int dp[sum + 1];
        int len = nums.size();
        memset(dp, 0 ,sizeof(dp));
        dp[0] = 1;
        for(int i=0;i<len;++i){
            int w = nums[i];
            for(int j=sum;j>=w;--j){
                dp[j] = dp[j] + dp[j-w];
            }
        }   
        return dp[sum];
    }
};
posted @ 2022-03-02 22:37  fwx  阅读(24)  评论(0)    收藏  举报