首页 > 其他分享 >【力扣】目标和(新鲜的01背包题)

【力扣】目标和(新鲜的01背包题)

时间:2024-03-15 15:55:25浏览次数:20  
标签:01 return target nums int sum 力扣 背包 dp

题目描述

image

分析

01背包的题做起来最难的是把原问题转化成01背包题,通常需要写出题目中所有的数学关系,对公式进行化简后得到01背包的类型。
image

在这种情景下还需要重新定义dp数组的含义
于是连带的。dp数组的递推公式也要重新想
image
image
image

大胆的按照五步骤结合题目分析的话其实并不是难到无迹可寻,而如果太死板的套用模版的话反而可能会把问题复杂化。
image

于是得到代码如下:

class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int target) {
        if(nums.size() == 1){
            if(abs(nums[0]) == abs(target)){
                return 1;
            }else{
                return 0;
            }
        }
        int sum = accumulate(nums.begin(), nums.end(), 0);
        // if(sum < target){
        //     return 0;
        // }
        // if(sum == target){
        //     return 1;
        // }
        if((target + sum)%2 == 1){
            return 0;
        }
        if(abs(target) > abs(sum)){
        //这里排除了target + sum为负的情况,当出现这种情况时方案数为0
            return 0;
        }
        int length = (target + sum)/2;
        //cout<<length<<endl; 
        vector<int> dp(length+1,0);
        dp[0] = 1;
        
        for(int i = 0; i < nums.size();i ++){
        	for(int j = length; j >= nums[i]; j--){
        		dp[j] += dp[j - nums[i]];
			}
//			for(int k = 0; k < length+1; k++){
//				cout<<dp[k]<<" ";
//			}
//			cout<<endl;
		}
		return dp[length];
    }
};

就算清楚思路之后,这题在细节上也很难把握,因为数组和target都有负数的出现。

标签:01,return,target,nums,int,sum,力扣,背包,dp
From: https://www.cnblogs.com/satsuki26681534/p/18075140

相关文章

  • 树形DP 01
    树形DP1、没有上司的舞会(选或不选)题目描述某大学有\(n\)个职员,编号为\(1\ldotsn\)。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数\(r_i\),但是呢,如果某个职......
  • 无线电模块ODIN-W263-06B专为物联网网关应用而设计,QN9080-001-M17Y支持蓝牙和NFC的模
    本篇文章主要介绍三款无线模块:无线电模块ODIN-W263-06B专为物联网网关应用而设计,QN9080-001-M17Y支持蓝牙和NFC的模块,RS9116W-DB00-AB1多协议无线模块——明佳达1、ODIN-W2系列:具有Wi-Fi和蓝牙双模式(蓝牙BR/EDR和蓝牙低能耗v4.2)描述:ODIN-W2是一款紧凑而强大的独立多无线电模块......
  • cve-2016-7124 序列化漏洞 php _weakup()
    版本范围php5<5.6.25php7<7.0.10原因魔法函数_weakup调用顺序:_weakup=>unserilize()如果对象属性个数:O:4:"test":3==3大于真是属性个数:3>2,则会跳过_weakup()的执行O:4:"test":3:{s:2:"v1";s:6:"hxdyjx";s:2:"v2";s:3:"1......
  • CF1016D
    problem&blog构造题。把从\((1,1)\)到\((n-1,m-1)\)的所有数变成\(0\),这样从第\(1\)行到第\(n-1\)行的最后一个数必定能满足要求。从第一列到第\(m-1\)也是如此。于是我们只需要检查最后一个数存不存在即可。加入行和列要求的不一样,那么就没有,否则可以构......
  • 维修Kistler奇石乐触摸屏监视器maXYmos 5867B1010 5867B0001
    用于批量生产和系列零件的光学测试和分选机光学检测系统为必须满足医疗技术或汽车行业等行业严格要求的产品提供了一种久经考验的质量保证方法。为了成功实施0-ppm策略并保证所有制造零件的质量,测试系统必须可靠地检查工件。检查不仅必须涵盖复杂的几何形状和尺寸稳定性,还必......
  • 西门子人机界面维修SIEMENS 6AV6 644-0BA01-2AX1 MP 377工控机
    SIMATICHMI面板–轻松实现面向机器的操作当人们需要使用机器和设备执行各种任务时,就需要监控和操作员控制设备。在面向机器的操作和监控方面,SIMATICHMI面板始终是首选。SIMATICHMI面板产品组合:适应性强、可扩展、面向未来在人与机器或操作员与流程之间的接口处,数字......
  • 背包问题(0-1)学习心得
    首先声明本文章为本人学习心得体会,仅供个人总结使用。如有错误,欢迎大家指正。背包问题(0-1)有a个物体和容量为b的背包,每个物体有对应的重量与价值,当背包装满时,最大价值为多少?二维数组解法确定二维数组含义二维数组dp的含义:0-i个物品任选放进容量为j的背包的最大价值i......
  • [蓝桥杯 2017 国 C] 合根植物(P8654)
    #include<bits/stdc++.h>#defineendl'\n'usingll=longlong;typedefunsignedlonglongull;usingnamespacestd;voidGordenGhost();intn,m;map<int,int>fa;intfindB(intx){if(fa[x]==x)returnx;returnfa[x]=findB(......
  • P3643 [APIO2016] 划艇
    题意:在首尔城中,汉江横贯东西。在汉江的北岸,从西向东星星点点地分布着\(N\)个划艇学校,编号依次为\(1\)到\(N\)。每个学校都拥有若干艘划艇。同一所学校的所有划艇颜色相同,不同的学校的划艇颜色互不相同。颜色相同的划艇被认为是一样的。每个学校可以选择派出一些划艇参加节日......
  • CTF笔记——[GXYCTF2019]禁止套娃 1
    [GXYCTF2019]禁止套娃1打开题目之后什么都没看到所以进行常规的检测漏洞,扫描目录发现存在.git文件夹下的文件存在#DirsearchstartedSunMar1015:19:392024as:D:\Python\Scripts\dirsearch-uhttp://849b4a98-3df3-4abb-927e-1a358a178e30.node5.buuoj.cn:81/-x429......