自学动态规划——最后一块石头的重量 II

embedded/2024/11/15 6:02:41/

最后一块石头的重量 II

1049. 最后一块石头的重量 II - 力扣(LeetCode)

也是三刷,能无阻力做出来,但是发现做的效果没有之前好了,可以学学之前做的时候是如何优化的。

AC:

int lastStoneWeightII(vector<int>& stones)
{//也是分为两组,要让这两组的差值最小即可//看做是背包,均分数值,即最大容量是 sum/2,然后选取来装,让其尽可能装满,最后用总量来减就是另一个背包的重量,将两者相减就是答案int sum=0;for(int i=0;i<stones.size();i++)    sum+=stones[i];int total=sum/2;vector<int>dp(total+1,0);for(int i=0;i<stones.size();i++)for(int j=total;j>=stones[i];j--)dp[j]=max(dp[j],dp[j-stones[i]]+stones[i]);return abs((sum-dp[total])-dp[total]);
}

Faster:

优化方法是,多加了一个判断,如果恰好已经是一半了,那就直接返回就好,不需要再算剩下的了,因为此时已经是最好的安排了。

int lastStoneWeightII(vector<int>& stones)
{int dp[3002] = { 0 };int sum = 0;for (int s : stones)	sum += s;int maxsize = sum / 2;dp[0] = 0;for(int i=0;i<stones.size();i++)for (int j = maxsize; j >= stones[i]; j--){if (dp[j] < maxsize)dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);else if (2*dp[j] == sum)	return 0;//如果大于,那就顺延,不变}return sum - 2 * dp[maxsize];
}


http://www.ppmy.cn/embedded/42505.html

相关文章

还不明白日内交易?澳福实例讲解

想成为一名真正的日内交易者&#xff0c;其实很简单&#xff0c;就是能抓住反转的信号进行交易&#xff0c;这可以通过技术图表或基本面分析来确认。投资者通常会在5-8根蜡烛的走势变化中获利。 下面澳福外汇实例讲解&#xff1a; 通过观察欧美的小时间周期&#xff0c;可以发现…

【Unity】免费的高亮插件——QuickOutline

除了常见的HighLightSystem来实现的高亮功能&#xff0c;其实还有很多的方法实现物体的高亮。 在 Unity资源商店 搜索OutLine&#xff0c;就会有很多免费好用的高亮插件。 下面介绍一下 QuickOutline这个插件&#xff0c;在 Unity资源商店 搜索到后&#xff0c;点击进去就可以…

梦幻西游手游全自动挂机搬砖项目,单窗口日收益60+【挂机脚本+使用教程】

项目介绍&#xff1a; 外面现在收费2980的梦幻西游手游全自动挂机项目&#xff0c;全套教程&#xff0c;脚本配置完&#xff0c;疯狂出金。 操作简单&#xff0c;可以24小时全自动挂机&#xff0c;适合工作室放大批量操作&#xff0c;全自动游戏搬砖&#xff0c;单窗口日收益…

数据可视化的强大工具​:PowerBI

大家好&#xff0c;今天我们来聊聊一个让数据分析变得简单而强大的工具——Power BI。在这个数据驱动的时代&#xff0c;无论是企业决策还是个人洞察&#xff0c;都离不开对数据的深入挖掘和直观展现。Power BI正是这样一款能够助你轻松实现这一目标的神奇工具。 什么是Power …

【前端三剑客之HTML】详解HTML

1. HTML(超文本标记语言) HTML意为超文本标记语言&#xff0c;其可以通过标签把其他网页/图片/视频等资源引入到当前网页中&#xff0c;让网页最终呈现出来的效果超越了文本.HTML是一种标记语言&#xff0c;其是由一系列标签组成的. 而且每个标签都有特定的含义和确定的页面显…

【编译原理复习笔记】正则表达式与自动机

正则表达式 正则表达式是一种用来描述正则语言的更紧凑的表达方法 e.g. r a ( a ∣ b ) ∗ ( ϵ ∣ ( . ∣ ) ( a ∣ b ) ) ra(a|b)^*(\epsilon|(.|\\_ )(a|b)) ra(a∣b)∗(ϵ∣(.∣)​(a∣b)) 正则表达式可以由较小的正则表达式按照特定的规则递归地构建。每个正则表达式定义…

node.js 读写数据库和中间件

查Mysql返回json ## npm install mysql --save 不使用框架 const http require(http); const mysql require(mysql);// 创建 MySQL 连接 const connection mysql.createConnection({host : localhost,user : root,password : root,database : db_devops });// 连…

linux perf

ubuntu 安装方法 查看内核版本 uname -a 联网状态下执行下面命令 apt install linux-tools-common sudo apt install linux-tools-5.15.0-76-generic #注意对应版本 sudo apt install linux-cloud-tools-5.15.0-76-generic