【LeetCode】【0-1背包】目标和

题目链接:494. 目标和 - 力扣(LeetCode)

要在数组中通过加减元素得到目标和,记加的元素和为x,减的元素和为y,即x-y=target

又因为x+y=sum,两式相加,可以求得x=(target+sum)/2,即题目变成能不能在元素里面找到一个组合的和为x,即0-1背包问题,基本同【LeetCode】【0-1背包】分割等和子集-CSDN博客

dpi变成存在子集和为i的个数

注意如果target+sum不是偶数或者target的绝对值大于sum都是没有的

复制代码
class Solution {
public:
    int findTargetSumWays(vector<int> &nums, int target) {
        int sum = 0;
        for (auto &num: nums)sum += num;
        if (sum + target & 1 || abs(target) > sum)return 0;
        int x = (sum + target) / 2;
        vector<int> dp(x + 1);
        dp[0] = 1;
        for (auto &num: nums)
            for (int i = x; i >= num; --i)
                dp[i] += dp[i - num];
        return dp[x];
    }
};
相关推荐
XuCoder10 分钟前
改一个数,右边全得重算,这题怎么扛住两万次查询
算法
小羊没烦恼!17 分钟前
在Scrum中实施敏捷建模
java·开发语言·windows·算法·c#
weixin_3077791323 分钟前
基于睿擎工业开发平台的预训练视觉模型轻量化适配与低代码部署优化
开发语言·算法
hold?fish:palm1 小时前
45 二叉树的右视图
开发语言·c++·算法
粤鼎恒业2 小时前
惠州工厂电子料回收厂家推荐:从交接单反推筛选标准
大数据·数据库·算法·硬件架构·硬件工程·pcb工艺·材料工程
小爷毛毛(卓寿杰)2 小时前
【Agent 意图识别】输出协议、评估与置信度
人工智能·算法·大模型·prompt·大语言模型·agent
优质酸酸乳2 小时前
力扣100题之21合并两个有序链表
算法·leetcode·链表
旖旎夜光2 小时前
LeetCode 137 : 只出现一次的数字 II(位运算) —— 题解
c++·笔记·学习·算法·leetcode·力控
旋生万物2 小时前
Agent System Prompt 注入螺旋公理:让 AI 推理不跑偏的可复制模板(附完整 Prompt)
人工智能·算法
深圳雨林凯AI3 小时前
图案裂变的空间关系原理:元素放大为何必然挤压负空间,以及三个可调变量|雨林凯AI技术拆解
人工智能·算法