当前位置: 首页 > news >正文

dp专题10 目标和

本题链接:. - 力扣(LeetCode)

题目:

思路:

        根据这道题,可以通过暴力的方法进行取 + 号或者 - 号 两个操作,通过当刚好得到 target 的时候 答案 +1,但是通过长度是 20 ,操作状态为 2个,随后的回溯暴力递归,最坏的情况时间复杂度大约是 20^20^2 ,肯定会TLE了。

        这时候就用到了动态规划dp,这里我们可以知道有两个操作 +  -,我们分成两个子集,一些放正号子集 left,另一些放负号子集 righ。

最后得到 :  left + righ = sum                 其中 sum 为整个 nums 数组的总和

然后将两个子集合并:   left - righ = target    

根据这两个式子我们可以推导出              left = (sum + target) / 2

这时候我们又可以将其看作为 背包问题了,根据题目意思要求的是能够凑成 target的方法有多少种,相当于背包问题中能够刚好装满给背包容量的方案数是多少一样的。

只是这里需要计算背包容量   v 为  left 

代码详解如下:

inline int findTargetSumWays(vector<int>& nums, int target) 
{int sum = 0;	// 计算 nums 数组的总和for(int &i:nums) sum += i;// 分成两个子集,   一个是正号的子集 left , 一个是 负号的子集 righ// left + righ = sum// left - righ = target// left = (sum + target) / 2// 令 left 作为 背包容量,问刚好凑够 left 的子集有多少种方法// 其中 当 (sum + target) 不能被 2 整除 或者 当全部为 +号 或者 -号 的sum   小于 target,说明根本凑不齐int v = (sum + target) / 2;if(v * 2 != (sum + target) || abs(target) > sum) return 0;// dp[i] 中 i 含义为 : 装满 容量 i        dp[i] 含义为 装满 容量 i 的方法有多少种   int n = nums.size();vector<int>dp(n + 1000,0);/* 递推公式:  dp[i - num[i]] = dp[i] 即: 有  dp[target - num[i]]种方法 凑成 dp[target]  假设 num[i] = i  target = 5即:    1   dp[4] 种方法凑成 dp[5]									2   dp[3] 种方法凑成 dp[5]3   dp[2] 种方法凑成 dp[5]4   dp[1] 种方法凑成 dp[5]5   dp[0] 种方法凑成 dp[5]最后 dp[5] 中方法总共有: dp[0] + dp[1] + dp[2] + dp[3] + dp[4]最后公式为   dp[i] += dp[i - nums[i]]*/// dp 初始化, 0 凑成 0 的方法只有一种dp[0] = 1;for(int i = 0;i < n;++i){for(int j = v;j >= nums[i];--j){dp[j] += dp[j - nums[i]];}}return dp[v];
}

最后提交:

相关文章:

dp专题10 目标和

本题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 根据这道题&#xff0c;可以通过暴力的方法进行取 号或者 - 号 两个操作&#xff0c;通过当刚好得到 target 的时候 答案 1&#xff0c;但是通过长度是 20 &#xff0c;操…...

详解 docker 镜像制作的两种方式

概要 制作Docker镜像一般有2种方法&#xff1a; 通过Dockerfile&#xff0c;完成镜像的创建使用仓库中已有的镜像&#xff0c;安装自己使用的软件环境后完成新镜像创建 docker 常用命令 docker build: 用于构建 Docker 镜像。该命令可以从 Dockerfile 构建镜像&#xff0c;…...

selenium元素单击不稳定解决方法

selenium自动化测试过程中&#xff0c;经常会发现某一元素单击&#xff0c;很不稳定&#xff0c;有时候执行了点击没有反映。 以下总结两种解决方法&#xff1a;都是通过js注入的方式去点击。 1.F12查一看&#xff0c;要点击的按钮&#xff0c;或连接&#xff0c;有没有οncl…...

vue3中vite使用sass

引用&#xff1a;https://blog.csdn.net/weiliang_66/article/details/132469597 npm install sass -d配置vite.config.js: css: {preprocessorOptions: {scss: {additionalData:import "/assets/styles/main.scss";}}}创建对应的 main.sass...

centos 8.0 安装sysbench 1.0.17

序号步骤说明执行命令执行结果备注1 下载并解压sysbench-1.0.17.zip sysbench-1.0.17.zip2安装依赖文件 yum install automake libtool -y yum install /usr/include/libpq-fe.h 3安装sysbench cd sysbench-1.0.17 ./autogen.sh ./configure \ --prefix/sysbench \ --with-pgsq…...

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统 随着油气工业的发展&#xff0c;管道泄漏成为一个严峻的安全问题。本文介绍了一种基于LabVIEW的分布式光纤油气管道泄漏检测及预警系统的设计思路和组成结构。系统包括硬件和软件两部分&#xff0c;其中硬件部分详细阐述了分…...

Go后端开发 -- Go Modules

Go后端开发 – Go Modules 文章目录 Go后端开发 -- Go Modules一、什么是Go Modules?二、GOPATH的工作模式1.GOPATH模式2.GOPATH模式的弊端 三、Go Modules模式创建项目1.go mod命令2.go mod环境变量3.使用Go Modules初始化项目4.修改模块的版本依赖关系 四、Go Modules下impo…...

基于det_keypoint_unite的ROS功能包(jetson部署)

文章目录 硬件软件FastDeploy编译CMakeLists.txt头文件源代码硬件 Jetson AGX Orin 64GB 软件 gcc/g++ >= 5.4(推荐8.2)cmake >= 3.10.0jetpack >= 4.6.1opencv=4.2.0FastDeploy编译 git clone https://github.com/PaddlePaddle/FastDeploy.git cd FastDeploy mkdi…...

TS 36.211 V12.0.0-下行(8)-调制和上变频

本文的内容主要涉及TS 36.211&#xff0c;版本是C00&#xff0c;也就是V12.0.0。...

基于SSM酒店后台管理系统【源码】【最详细运行文档】

基于SSM酒店后台管理系统【源码】【最详细运行文档】 功能简介技术描述运行准备♝项目运行访问项目 演示图✅源码获取 &#x1f4a1; 「分享」 大家好&#xff0c;最近几年在酒店后台管理系统非常流行&#xff0c;无论是上课的项目或者是一些毕设都会以酒店后台管理系统举例说…...

利用Python实现每日新闻早报推送

本文将介绍如何使用Python编写简单的逻辑&#xff0c;通过调用API接口实现每日新闻推送功能。 步骤&#xff1a; 导入所需的库&#xff1a; 在代码的开头&#xff0c;我们需要导入所需的库。通常&#xff0c;我们会使用requests库来发送HTTP请求&#xff0c;以获取新闻数据。 …...

图像分割-Grabcut法

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割-Grabcut法(C#)-CSDN博客 GrabCut是一种基于图像分割的技术&#xff0c;它可以用于将图像…...

性能测试浅谈

早期的性能测试更关注后端服务的处理能力。 一个用户去访问一个页面的请求过程&#xff0c;如上图。 数据传输时间 当你从浏览器输入网址&#xff0c;敲下回车&#xff0c;开始... 真实的用户场景请不要忽视数据传输时间&#xff0c;想想你给远方的朋友写信&#xff0c;信件需…...

媒体运营常用的ChatGPT通用提示词模板

媒体平台选择&#xff1a;如何选择合适的媒体平台&#xff0c;确保内容的有效传播&#xff1f; 内容策划与创作&#xff1a;如何策划和创作高质量的内容&#xff0c;吸引和留住目标受众&#xff1f; 内容发布与推广&#xff1a;如何有效地发布和推广内容&#xff0c;提高内容…...

Java学习苦旅(二十一)——泛型

本篇博客将详细讲解Java中的泛型。 文章目录 泛型的定义语法示例 泛型类语法示例类型边界语法示例 类型擦除通配符语法示例上界语法示例 下界语法示例 裸类型泛型方法语法示例 泛型的限制结尾 泛型的定义 语法 class 泛型类名称<类型形参列表> {//这里可以使用类型参数…...

具备闭环思维的测试才更充分

测试工作的终极目标是为了保障产品的质量。如果用同一个维度衡量测试人员的业务水平&#xff0c;简单粗暴一些&#xff1a;那就是针对同一款产品&#xff0c;哪个测试人员发现的bug多&#xff0c;哪个测试人员的测试理论与实践水平相对来说还是高一些。 前两天组长在群里分析了…...

flask web学习之模板(一)

文章目录 一、模板基本用法1.1 定界符1.2 模板语法1.3 渲染模板 二、模板辅助工具2.1 上下文2.2 全局对象2.3 过滤器2.4 测试器2.5 模板环境对象 在动态web程序中&#xff0c;视图函数返回的HTML数据往往需要根据相应的变量&#xff08;比如查询参数&#xff09;动态生成。当HT…...

RedisInsight - Redis官方可视化工具

一、RedisInsight 简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具&#xff0c;它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控&#xff0c;并且可以在界面上使用 CLI 和连接的 Redis 进行交互&#xff08;RedisInsight 内置对 Redis 模块支持&#…...

Matlab定义函数计算斐波那契数列

以下是使用 MATLAB 定义函数计算并输出斐波那契数列前 200 个数的示例代码&#xff1a; function result fibonacci(n)if n < 1 || n > 200result NaN;elseif n 1 || n 2result 1;elseresult fibonacci(n-1) fibonacci(n-2);end endn 200; result fibonacci(n)…...

计算机网络面试题总结

总结自Network | JavaGuide(Java面试 学习指南) 什么是OSI7层模型&#xff1f; 什么是TCP/IP 四层模型&#xff1f; 为什么网络要分层&#xff1f; 应用层有哪些常见的协议&#xff1f; 传输层有哪些常见的协议&#xff1f; 网络层有哪些常见的协议&#xff1f; 从输入…...

视频转为序列图的软件,让视频批量转为序列图

你是否曾经遇到过这样的困境&#xff1a;需要将一段视频转为一系列的图片&#xff0c;但却没有合适的工具来完成&#xff1f;或许你曾经手动截图&#xff0c;或者用其他方式&#xff0c;但结果往往不尽如人意&#xff0c;图片质量差、色彩失真、画面不清晰。现在&#xff0c;让…...

目标检测中的常见指标

概念引入&#xff1a; TP&#xff1a;True Positive IoU > 阈值 检测框数量 FP: False Positive IoU < 阈值 检测框数量 FN: False Negative 漏检框数量 Precision:查准率 Recall:查全率&#xff08;召回率&#xff09; AP&am…...

QT上位机开发(会员充值软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 所有的控件当中&#xff0c;除了label、edit、radio、combobox和button之外&#xff0c;另外一个用的比较多的控件就是grid&#xff0c;也可称之为…...

小程序实现绘制图片 保存到手机

HTML <template><view><canvas canvas-id"myCanvas" :style"{height:380px,width:wWidthpx,background:#FFFFFF}"></canvas><view class"textCenter"><button click"saveCanvas">保存图片</b…...

Elasticsearch基本操作之索引操作

本文说下Elasticsearch基本操作之索引操作 文章目录 概述创建索引创建索引示例重复创建索引示例 查看索引查看所有索引查看单个索引 删除索引删除索引 概述 由于是使用命令来操作Elasticsearch&#xff0c;可以使用kibana&#xff0c;postman和apifox等工具 我使用了apifox来执…...

调用Java线程相关的API为什么能够控制操作系统线程?

今天我们解决Java线程的这五个问题&#xff1a; Java线程创建的完整流程 Java的线程是何时与JVM线程绑定的 JVM线程是何时与OS线程绑定的 Java线程对应的OS线程有什么特殊的地方 调用JavaAPI为什么能够操作OS线程 对于任何支持多线程的计算机语言来说&#xff0c;深入理解…...

【办公技巧】excel中设置选项按钮的方法

大家是否会遇到需要勾中选项的情况&#xff0c;我们可以在电子表格中制作出可以勾选、选中的选项按钮&#xff0c;今天我们一起学习一下设置方法。 首先&#xff0c;我们需要先在excel工具栏中添加一个功能模块&#xff1a;开发工具 依次点击excel中的文件 – 选项 – 自定义…...

如何编写高效的正则表达式?

正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种强大的文本处理技术&#xff0c;广泛应用于各种编程语言和工具中。本文将从多个方面介绍正则表达式的原理、应用和实践&#xff0c;帮助你掌握这一关键技术。 正则可视化 | 一个覆盖广泛主题…...

vue3中使用pinia,更改state中数据,试图不更新问题

直接上代码 使用computed&#xff0c;可以实现。...

【前端设计】文字聚光灯

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 案例 文字聚光灯效果可以用于网站标题 html <!DOCTYPE html> <html lang"en&quo…...

建设网站费用评估/百度手机下载安装

GBDT&#xff08;MART&#xff09; 迭代决策树入门教程 | 简介 http://blog.csdn.net/w28971023/article/details/8240756转载于:https://www.cnblogs.com/zhangbojiangfeng/p/6127237.html...

简述程序开发的流程/专业seo排名优化费用

ceph是一种开源的分布式的存储系统&#xff0c;包含以下几种存储类型&#xff1a; 块存储&#xff08;rbd&#xff09;对象存储(RADOS Fateway)文件系统&#xff08;cephfs&#xff09;块存储&#xff08;rbd&#xff09; 块是一个字节序列&#xff08;例如&#xff0c;512字节…...

一站式快速网站排名多少钱/seo优化资源

这种外部的 LOB 类型, 通过数据库记录变化情况, 但是数据的具体保存是在数据库外部进行的。 Oracle 8i 可以读取、查询 BFILE,但是不能写 入。 大小由操作系统决定。 oracle 数据库中讨论 char ,varchar ,varchar2 数据类型! 这 3 ......10.数据文件:用于保存数据库中数据的文件…...

网站网站制作网站的/搜索引擎的使用方法和技巧

大家都知道JavaScript的专长就是处理客户端也就是与浏览器打交道了&#xff0c;所有的与服务器端的交互必须交给后台语言处理程序去做&#xff0c;基于JavaScript不能与服务器进行直接交互这样一个现状&#xff0c;Ryan Dahl决定使用V8引擎来创建JavaScript服务器环境。在此简单…...

dw不用代码做网站/福建省人民政府

这条线&#xff1a;n int(n/2)…将n转换为一个float&#xff0c;将该float除以2&#xff0c;然后通过丢弃小数部分将其转换回int。在对于小于2**52的整数&#xff0c;转换为float是无损的&#xff0c;但是对于更大的整数&#xff0c;它必须舍入到最接近的53位数字&#xff0c;…...

网站首页加载特效/写软文是什么意思

安装choco choco 是Windows上类似Mac的HomeBrew的命令行软件安装工具&#xff0c;按Windows键-Q搜索Power Shell&#xff0c;右击选择以管理员身份运行&#xff0c;打开后粘贴以下代码运行 iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex 用choco安装常用软件…...