LeetCode 956. 最高的广告牌(DP)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

你正在安装一个广告牌,并希望它高度最大。
这块广告牌将有两个钢制支架,两边各一个。每个钢支架的高度必须相等

你有一堆可以焊接在一起的钢筋 rods。
举个例子,如果钢筋的长度为 1、2 和 3,则可以将它们焊接在一起形成长度为 6 的支架。

返回广告牌的最大可能安装高度。如果没法安装广告牌,请返回 0。

示例 1:
输入:[1,2,3,6]
输出:6
解释:我们有两个不相交的子集 {1,2,3}{6},它们具有相同的和 sum = 6。示例 2:
输入:[1,2,3,4,5,6]
输出:10
解释:我们有两个不相交的子集 {2,3,5}{4,6},它们具有相同的和 sum = 10。示例 3:
输入:[1,2]
输出:0
解释:没法安装广告牌,所以返回 0。提示:
0 <= rods.length <= 20
1 <= rods[i] <= 1000
钢筋的长度总和最多为 5000

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/tallest-billboard
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dp[i][j] 表示处理完 i 钢筋,两边差距为 j 时,可以组成的最大高度
class Solution {
public:int tallestBillboard(vector<int>& rods) {if(rods.size() <= 1)return 0;int dp[20][5001], n = rods.size();int total = accumulate(rods.begin(), rods.end(), 0);// dp[i][j] 表示处理完 i 支架,两边差距为 j 时,可以组成的最大高度memset(dp, -1, sizeof(dp));dp[0][rods[0]] = dp[0][0] = 0;for(int i = 1; i < rods.size(); i++) {   //样本维度for(int j = 0; j <= total; ++j){if(dp[i-1][j] == -1)//上一行状态不存在continue;// 当前钢筋不要,丢弃dp[i][j] = max(dp[i][j], dp[i-1][j]);// 当前钢筋,加在长的一边dp[i][j+rods[i]] = max(dp[i][j+rods[i]], dp[i-1][j]);// 当前钢筋,加在短的一边,现在高度差为 abs(j-rods[i])dp[i][abs(j-rods[i])] = max(dp[i][abs(j-rods[i])], dp[i-1][j]+min(j, rods[i]));}}// 返回高度差为 0 的情况return dp[n-1][0]==-1 ? 0 : dp[n-1][0];}
};

40 ms 8.1 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

python面试题总结(一)字符串反转,写取指定数函数

1.请至少用一种方法下面字符串的反转&#xff1f; # 1.请至少用一种方法下面字符串的反转&#xff1f; s hello print() print(-a1-切片,简单的步长为-1, 即字符串的翻转(常用)-) #方法一&#xff1a;切片,简单的步长为-1, 即字符串的翻转(常用); a1s[::-1] print(a1)print() …

新闻发布系统登陆页

主要为前台设计&#xff0c;这真是一个细致活。另外用到圆角矩形制作&#xff0c;其实学会了也蛮简单的。 要学好后台对前台一定要有一定的了解并掌握一些相关知识。 以下为登录页代码&#xff1a; <% Page Language"C#" AutoEventWireup"true" CodeFil…

Tensorflow线程队列与IO操作

目录 Tensorflow线程队列与IO操作 1 线程和队列 1.1 前言 1.2 队列 1.3 队列管理器 1.4 线程协调器 2 文件读取 2.1 流程 2.2 文件读取API&#xff1a; 3 图像读取 3.1 图像读取基本知识 3.2 图像基本操作 3.3 图像读取API 3.4 图片批处理流程 3.5 读取图片案例 …

Django其他(站点、列表、上传

1.静态文件&#xff1a; 项目中的CSS、图片、js都是静态文件 一般会将静态文件放到一个单独的目录中&#xff0c;以方便管理 在html页面中调用时&#xff0c;也需要指定静态文件的路径&#xff0c;Django中提供了一种解析的方式配置静态文件路径 静态文件可以放在项目根目录下…

LeetCode 1298. 你能从盒子里获得的最大糖果数(BFS)

文章目录1. 题目2. 解题1. 题目 给你 n 个盒子&#xff0c;每个盒子的格式为 [status, candies, keys, containedBoxes] &#xff0c;其中&#xff1a; - 状态字 status[i]&#xff1a;整数&#xff0c;如果 box[i] 是开的&#xff0c;那么是 1 &#xff0c;否则是 0 。 - 糖…

给javascript初学者的24条最佳实践

1.使用 代替 JavaScript 使用2种不同的等值运算符&#xff1a;|! 和 |!&#xff0c;在比较操作中使用前者是最佳实践。 “如果两边的操作数具有相同的类型和值&#xff0c;返回true&#xff0c;!返回false。”——JavaScript&#xff1a;语言精粹 然而&#xff0c;当使用和&a…

Python面试题(二)列表去重,单例

1.Python里面如何实现tuple和list的转换python中&#xff0c;tuple和list均为内置类型&#xff0c; 以list作为参数将tuple类初始化&#xff0c;将返回tuple类型tuple([1,2,3]) #list转换为tuple以tuple作为参数将list类初始化&#xff0c;将返回list类型list((1,2,3)) #tuple转…

LeetCode 1614. 括号的最大嵌套深度

文章目录1. 题目2. 解题1. 题目 如果字符串满足一下条件之一&#xff0c;则可以称之为 有效括号字符串&#xff08;valid parentheses string&#xff0c;可以简写为 VPS&#xff09;&#xff1a; 字符串是一个空字符串 ""&#xff0c;或者是一个不为 "("…

[AngularJS]Chapter 1 AnjularJS简介

创建一个完美的Web应用程序是很令人激动的&#xff0c;但是构建这样应用的复杂度也是不可思议的。我们Angular团队的目标就是去减轻构建这样AJAX应用的复杂度。在谷歌我们经历过各种复杂的应用创建工作比如&#xff1a;GMail、Map和日历。我们认为我们有必要把这些经验总结下来…

Log4j框架配置文件

Log4j框架配置文件 1 Log4j的配置文件分类 Log4j支持两种配置文件格式&#xff1a;一中是以log4j.properties &#xff0c;另一种是 log4j.xml 2 Log4j的配置文件例子 ##自定义日志的输出级别log4j.rootLoggerWARN, stdout##自定义日志 log4j.logger.accessWARN, accesslog…

python面试总结(三)拷贝与通信

1.请写出下列结果&#xff1f;&#xff08;深拷贝与浅拷贝&#xff09; import copy a [1, 2, 3, 4, [a, b]] b a c copy.copy(a) d copy.deepcopy(a) a.append(5) a[4].append(c) print(a) print(b) print(c) print(d)# 答案如下&#xff1a; [1, 2, 3, 4, [a, b, c], 5] …

LeetCode 1615. 最大网络秩(出入度)

文章目录1. 题目2. 解题1. 题目 n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络。 每个 roads[i] [ai, bi] 都表示在城市 ai 和 bi 之间有一条双向道路。 两座不同城市构成的 城市对 的 网络秩 定义为&#xff1a;与这两座城市 直接 相连的道路总数。如果…

使用JSLint提高JS代码质量

随着富 Web 前端应用的出现&#xff0c;开发人员不得不重新审视并重视 JavaScript 语言的能力和使用&#xff0c;抛弃过去那种只靠“复制 / 粘贴”常用脚本完成简单前端任务的模式。JavaScript 语言本身是一种弱类型脚本语言&#xff0c;具有相对于 C 或 Java 语言更为松散的限…

Django工具:Git简介与基本操作

1.Git简介&#xff1a; 1.Git是目前世界上最先进的分布式版本控制系统 网址&#xff1a;http://github.com 2.总结git的两大特点&#xff1a; 版本控制&#xff1a;可以解决多人同时开发的代码问题&#xff0c;也可以解决找回历史代码的问题 分布式&#xff1a;Git是分布式…

用户画像系统应用

用户画像系统应用 1 用户信用等级分级 比如在银行根据分级决定给用户贷款的额度&#xff0c;以及贷款的时长&#xff0c;那么怎么对用户分级呢&#xff1f;首先收集大量用户的数据&#xff0c;包括基本属性信息以及用户在使用银行的借记卡&#xff0c;信用卡等等。如果是运营…

SVN或其他网盘类软件同步图标不显示的异常

因为Windows Explorer只支持15个ShellIcon显示 所以有些软件为了正常显示其同步状态&#xff0c;就会通过修改自己的ShellIcon名称来抢占这15个名额 只需在注册表中修改下他们的名称&#xff0c;并将所需要展示的Icon的名称顺序提前 重启Explorer进程即可&#xff1a; HKEY_L…

LeetCode 1616. 分割两个字符串得到回文串

文章目录1. 题目2. 解题1. 题目 给你两个字符串 a 和 b &#xff0c;它们长度相同。 请你选择一个下标&#xff0c;将两个字符串都在 相同的下标 分割开。 由 a 可以得到两个字符串&#xff1a; aprefix 和 asuffix &#xff0c;满足 a aprefix asuffix &#xff0c;同理&am…

Kafka基础

Kafka基础 1 消息队列 1.1 什么是消息队列 消息队列&#xff08;MQ&#xff09;&#xff1a;消息队列&#xff0c;保存消息的队列。消息的传输过程中的容器&#xff1b;主要提供生产、消费接口供外部调用做数据的存储和获取。 1.2 为什么要有消息队列 当网站面对教大的流量…

系统总结学习 Python 的 14 张思维导图

本文主要涵盖了 Python 编程的核心知识&#xff08;暂不包括标准库及第三方库&#xff09;。 首先&#xff0c;按顺序依次展示了以下内容的一系列思维导图&#xff1a;基础知识&#xff0c;数据类型&#xff08;数字&#xff0c;字符串&#xff0c;列表&#xff0c;元组&#x…

LeetCode 1617. 统计子树中城市之间最大距离(枚举所有可能+图的最大直径)

文章目录1. 题目2. 解题1. 题目 给你 n 个城市&#xff0c;编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges &#xff0c;其中 edges[i] [ui, vi] 表示城市 ui 和 vi 之间有一条双向边。 题目保证任意城市之间只有唯一的一条路径。换句话说&#xff0c;所有城市形成了…