LeetCode 494. Target Sum

作为一个超级小白,最近开始寻找互联网公司的就业机会,可是无奈代码关难过。于是最近开始刷LeetCode上的习题。

这道题其实可以转换为典型的动态规划01背包问题。它的描述如下:

You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symbols + and -. For each integer, you should choose one from + and - as its new symbol.

Find out how many ways to assign symbols to make sum of integers equal to target S.

Example:

Input: nums is [1, 1, 1, 1, 1], S is 3. 
Output: 5
Explanation: -1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3There are 5 ways to assign symbols to make the sum of nums be target 3.

 

首先,要知道这道题的状态转移方程。根据题中的表述可知状态转移方程为:

F(i, v) = F(i-1, v+ci) + F(i-1, v-ci)

其中F(i,v)表示前i个数能组成值为v的组合数,ci为第i个数的值。

 

下面是我的代码解答:

int findTargetSumWays(vector<int>& nums, int S) {int numsSum = accumulate(nums.begin(), nums.end(), 0);if(S>numsSum||S<-numsSum) return 0;int target = S + numsSum;vector<int> vec(target+1, 0);vec[0] = 1;vec[2*nums[0]] += 1;int n = nums.size();for (int i = 1; i < n; i++){for (int j = target; j >=0; j--){vec[j] = j - 2 * nums[i] >= 0 ? vec[j] + vec[j - 2 * nums[i]] : vec[j];}}return vec[target];
}

 

转载于:https://www.cnblogs.com/rocklamighty/p/9913120.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端项目难点及解决方法_预埋件施工重点难点的解决方法

点击箭头处“蓝色字”&#xff0c;关注我们哦&#xff01;&#xff01;关于施工重难点的问题&#xff0c;可根据主体结构施工情况&#xff0c;想从根本上解决几大重难点&#xff0c;必须严格按照设计图纸及规范要求放线定位&#xff0c;将预埋件施工精度控制合格率&#xff0c;…

小学计算机课5年级第一课,人教版(2015)小学信息技术 五年级下册 第1课 录制声音真轻松 教案...

人教版(2015)小学信息技术 五年级下册 第1课 录制声音真轻松 教案第1课录制声音真轻松教学目标知识与技能:1、了解Audacity软件的界面。2、能够掌握声音录制和编辑的方法。3、了解声音文件的基本格式及转换方法。过程与方法:? ? ? ?兴趣是最好的老师,是最强大的动力,本节课…

MySQL 基础语句

1 USE qy97;/*使用数据库*/2 CREATE TABLE book (bid INT PRIMARY KEY AUTO_INCREMENT,bname VARCHAR(50),price DOUBLE);/*创建表格*/3 DESC book;/*查看表格的格式*/4 ALTER TABLE book MODIFY price INT;/*修改列的类型 MODIFY*/5 ALTER TABLE book CHANGE bname bnames V…

视差滚动(Parallax Scrolling)技术在网页中应用的精美案例

视差滚动&#xff08;Parallax Scrolling&#xff09;是一种独特的网页内容表现形式&#xff0c;其基本原理是让多层背景以不同的速度移动&#xff0c;形成立体的运动效果&#xff0c;带来出色的视觉体验。作为今年网页设计的热点趋势&#xff0c;越来越多的网站应用了这项技术…

用Java可外部化

在理解Externalizable接口之前&#xff0c;您需要了解序列化。您可以在java中的序列化上阅读有关序列化的更多信息。 Java提供一种称为序列化的机制&#xff0c;以按字节顺序或字节顺序持久化Java对象&#xff0c;其中包括对象的数据以及有关对象的类型和存储在对象中的数据类…

批量删除html网页,批量删除.html · panghuamama/Clearly Local - Gitee.com

&#xfeff;批量删除$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.html; };…

apache camel 相关配置_使用apache camel从表中选择数据-问答-阿里云开发者社区-阿里云...

我希望能够使用Camel连续轮询数据库以从表中选择数据。我已经在我的Spring Boot应用程序中配置了Camel。这是我正在使用的配置build.gradle&#xff1a;implementation org.apache.camel:camel-jdbc-starter:2.24.0implementation org.apache.camel:camel-sql-starter:2.24.0Ro…

一些喜欢的诗词句子

原文链接&#xff1a;一些喜欢的诗词句子其一一些喜欢的诗词句子其二 清纳兰性德《酒泉子谢却荼蘼》 谢却荼蘼&#xff0c;一片月明如水。 篆香消&#xff0c;犹未睡&#xff0c;早鸦啼。 嫩寒无赖罗衣薄&#xff0c;休傍阑干角。 最愁人&#xff0c;灯欲落&#xff0c;燕还飞。…

[Swift]LeetCode1020. 飞地的数量 | Number of Enclaves

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

推荐30个新鲜出炉的精美 jQuery 效果

jQuery 是最流行和使用最广泛的 JavaScript 框架&#xff0c;它简化了HTML文档遍历&#xff0c;事件处理&#xff0c;动画以及Ajax交互&#xff0c;帮助Web开发人员更快速的实现各种精美的界面效果。jQuery 的易扩展性吸引了来自全球的开发者来共同编写 jQuery 插件&#xff0c…

Java常见陷阱

总览 Java是一种极简主义的语言&#xff0c;具有比其他语言故意更少的功能&#xff0c;尽管如此&#xff0c;Java仍然具有产生奇怪效果的边缘情况&#xff0c;甚至具有令人惊讶的效果的一些常见情况也会使您轻而易举。 如果您习惯于阅读另一种语言&#xff0c;则可以轻松地以错…

python高阶函数介绍_python高级特性和高阶函数及使用详解

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

会计专业计算机技能大赛,会计技能大赛策划

会计技能大赛策划一&#xff0e;活动背景会计是一个基于理论和实践相结合的学科&#xff0c;对于经管学院&#xff0c;会计专业是一个新创建的专业&#xff0c;缺少相应的会计实践。作为会计专业的学生&#xff0c;在不断学习理论的同时&#xff0c;我们更应该加强实践操作能力…

MySQL中查询获取每个班级成绩前三名的学生信息

CREATE TABLE t_testscore( pk_id INT PRIMARY KEY, c_name VARCHAR(50) , c_score INT, c_class INT )DEFAULT CHARSETutf8;INSERT INTO t_testscore VALUES (1, 张三6, 66, 1),(2, 张三5, 65, 1),(3, 张三4, 64, 1), (4, 张三3, 63, 1),(5, 张三2, 62, 1);INSERT…

vue自定义指令clickoutside扩展--多个元素的并集作为inside

都是个人理解&#xff0c;如果发现错误&#xff0c;恳请大家批评指正&#xff0c;谢谢。还有我说的会比较啰嗦&#xff0c;因为是以自身菜鸡水平的视角来记录学习理解的过程&#xff0c;见谅。 1.前言 产品使用vueelement作为前端框架。在功能开发过程中&#xff0c;难免遇到使…

35个让人惊讶的 CSS3 动画效果演示

本文收集了35个惊人的 CSS3 动画演示&#xff0c;它们将证明 CSS3 Transform 和 Transition 属性的强大能力。CSS 是网页设计非常重要的一部分&#xff0c;随着越来越多的浏览器对 CSS3 支持的不断完善&#xff0c;设计师和开发者们有了更多的选择。如今&#xff0c;用纯 CSS 就…

可选类型API

Java 8引入了Optional类。 简而言之&#xff0c;不是返回null&#xff0c;而是检查null&#xff0c;而是返回Optional实例&#xff0c;该实例可以设置或不设置值。 这样&#xff0c;您就不会因NullPointerException而失败。 我不会讨论Optional类型是否会完全消除NPE&#xff…

计算机社团活动丰富多彩,描写社团丰富多彩的句子

我们学校的社团活动真是丰富多彩用这个句子开头试着写一段话感恩生命&#xff0c;感谢她给予我们丰富的感情。喜怒哀乐&#xff0c;悲思忧惧&#xff0c;洒洒脱脱&#xff0c;原原本本&#xff0c;痛快淋漓&#xff0c;无拘无束&#xff1b;喜而笑&#xff0c;怒而吼&#xff0…

宝元系统u盘使用说明_教你如何使用U盘安装电脑系统

①到老毛桃官网首页下载老毛桃UEFI版u盘启动盘制作工具安装到电脑上&#xff1b;②准备一个容量在4G以上并能够正常使用的u盘。1第一步将u盘插入电脑usb接口&#xff0c;程序会自动扫描&#xff0c;我们只需在下拉列表中选择用于制作的u盘&#xff0c;然后点击“一键制作”按钮…

IP通信基础 4月1日

广域网数据链路控制规程 1.面向字符型传输规程 2.面向比特型传输规程 面向比特型传输规程分析 帧 标志字段F 地址字段A 控制字段C 信息字段TNFO 帧检验序列FCS 标志字段F 1Byte 1Byte 1Byte 可变长 2Byte 1Byte…