LeetCode 1105. 填充书架(DP)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

附近的家居城促销,你买回了一直心仪的可调节书架,打算把自己的书都整理到新的书架上。

你把要摆放的书 books 都整理好,叠成一摞:从上往下,第 i 本书的厚度为 books[i][0],高度为 books[i][1]

顺序 将这些书摆放到总宽度为 shelf_width 的书架上。

先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelf_width),然后再建一层书架。重复这个过程,直到把所有的书都放在书架上。

需要注意的是,在上述过程的每个步骤中,摆放书的顺序与你整理好的顺序相同
例如,如果这里有 5 本书,那么可能的一种摆放情况是:第一和第二本书放在第一层书架上,第三本书放在第二层书架上,第四和第五本书放在最后一层书架上。

每一层所摆放的书的最大高度就是这一层书架的层高,书架整体的高度为各层高之和。

以这种方式布置书架,返回书架整体可能的最小高度

示例:

输入:books = [[1,1],[2,3],[2,3],[1,1],[1,1],[1,1],[1,2]], shelf_width = 4
输出:6
解释:
3 层书架的高度和为 1 + 3 + 2 = 6 。
第 2 本书不必放在第一层书架上。提示:
1 <= books.length <= 1000
1 <= books[i][0] <= shelf_width <= 1000
1 <= books[i][1] <= 1000

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

2. 解题

  • 注意题目说必须按照顺序摆放
  • dp[i] 表示 i 书籍在该层的最右边时,书架的最小高度
class Solution {
public:int minHeightShelves(vector<vector<int>>& books, int shelf_width) {int n = books.size();vector<int> dp(n+1, INT_MAX);dp[0] = 0;//没有书的时候for(int i = 1; i <= n; ++i){int w = 0, h = 0;for(int j = i; j > 0; --j){if(w+books[j-1][0] <= shelf_width){	// 这一层还能放前面的书h = max(h, books[j-1][1]);//这层的高度w += books[j-1][0];//这层的宽度dp[i] = min(dp[j-1]+h, dp[i]);//     上一层的最右侧是 j-1 书籍,最低书架高度是 dp[j-1]//   加上当前层的高度 h }elsebreak;}}return dp[n];}
};

4 ms 7.6 MB C++


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

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

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

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

相关文章

python字符串前面加上序号_简单了解python字符串前面加r,u的含义

这篇文章主要介绍了简单了解python字符串前面加r,u的含义,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下u/U:表示unicode字符串不是仅仅是针对中文, 可以针对任何的字符串&#xff0c;代表是对字符串进行unicod…

java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

一、通过配置文件控制静态资源的热部署在配置文件 application.properties 中添加&#xff1a;#表示从这个默认不触发重启的目录中除去static目录spring.devtools.restart.excludeclasspath:/static/**或者使用&#xff1a;#表示将static目录加入到修改资源会重启的目录中来spr…

判断深度学习模型的稳定性_全自动搭建定制化深度学习模型

EasyDL服务自动化生成与部署EasyDL定制化训练和服务平台基于百度业界领先算法&#xff0c;旨在为用户量身定制业务专属AI模型。通过灵活的配置&#xff0c;用户可以将模型发布为公有云API、设备端离线SDK、本地服务器部署包、软硬一体方案等多种输出方式的AI服务。目前&#xf…

Android应用程序消息处理机制(Looper、Handler)分析

文章转载至CSDN社区罗升阳的安卓之旅&#xff0c;原文地址&#xff1a;http://blog.csdn.net/luoshengyang/article/details/6817933 Android应用程序是通过消息来驱动的&#xff0c;系统为每一个应用程序维护一个消息队例&#xff0c;应用程序的主线程不断地从这个消息 队例中…

冒泡排序和选择排序区别_你以为只是简单的排序?(一)

一直在犹豫要不要写排序的文章&#xff0c;因为真的烂大街了。可是一旦细看&#xff0c;还真是很多值的思考的地方&#xff0c;所以还是选择记录一下以下完整代码&#xff0c;均可从这里获取https://github.com/Rain-Life/data-struct-by-go/tree/master/sort排序算法效率分析了…

java hash 分库分表_分库分表方案

摘自&#xff1a;Java技术栈一、数据库瓶颈不管是IO瓶颈&#xff0c;还是CPU瓶颈&#xff0c;最终都会导致数据库的活跃连接数增加&#xff0c;进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是&#xff0c;可用数据库连接少甚至无连接可用。接下来就可以…

verilog设计简易正弦波信号发生器_信号发生器工作原理是什么

信号发生器是指产生所需参数的电气测试信号的仪器。根据信号波形可分为四类&#xff1a;正弦信号、函数&#xff08;波形&#xff09;信号、脉冲信号和随机信号发生器。那么信号发生器工作原理是什么&#xff1f;听听广州荣鑫电子怎么说。信号发生器又称信号源或振荡器&#xf…

LeetCode 1780. 判断一个数字是否可以表示成三的幂的和(位运算)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;如果你可以将 n 表示成若干个不同的三的幂之和&#xff0c;请你返回 true &#xff0c;否则请返回 false 。 对于一个整数 y &#xff0c;如果存在整数 x 满足 y3xy 3^xy3x&#xff0c;我们称这个整数 y 是三的幂…

Android “再按一次退出“

1 Override2 public boolean onKeyDown(int keyCode, KeyEvent event) {3 if (keyCode KeyEvent.KEYCODE_BACK) 4 {5 if ((System.currentTimeMillis() - mExitTime) > 2000) { //第一种&#xff1a;判断2次按后退键间隔是否在2秒内6 …

python群控安卓_Github优秀项目推荐,安卓设备免Root实现低延迟投屏和远控

暑假找了个暑假工&#xff0c;没办法人总是要吃饭嘛&#xff0c;Weiney也不例外。亲戚家的小公司想做移动app引流&#xff0c;当然我是完全不懂什么引流&#xff0c;我也就做个打杂的工作。别看我技术一般&#xff0c;在这个不大的公司我还是唯一专业对口的技术人才呢&#xff…

.net pdf转图片_pdf2image类库实现批量pdf转图片

通过pdf2image来实现对PDF文件的处理工作&#xff0c;我们本次主要做的是将PDF文件批量转成图片。之前写过批量提取封面的文章&#xff0c;但是在后期的深入编写过程中遇到一些问题&#xff0c;近期再次深入编写程序&#xff0c;一起来看看代码吧&#xff01;python一、说明本次…

java 悬浮提示框_表格(悬浮框提示)

JTable的ToolTip提示和其它的组件提示是一样的,因为它们都是继承于Jcomponent,当我们需要为我们的单元格实现ToolTip的时候,只需要复写它的getToolTipText方法就可以了,看看Sun官方的例子&#xff1a;//Implement table cell tool tips.OverridepublicString getToolTipText(Mo…

linux远程工具_【linux实操3.1】linux远程连接工具Secure的使用

把自己的闲置笔记本用来做centos7服务器了&#xff0c;同时也出一期教程&#xff0c;记录自己同时也帮助需要的人&#xff1b;安排如下1、【linux实操1】华硕笔记本安装centos7实战2、【linux实操2】使用yum在命令行安装常用工具3、【linux实操3】安装漂亮的桌面xfce桌面**记录…

IOS--UIAlertView的使用方法详细

IOS--UIAlertView的使用方法详细 // UIAlertView的常用方法 // 标准样式 UIAlertView *oneAlertView [[UIAlertView alloc] initWithTitle:"标题"message:"提示内容" delegate:self cancelButtonTitle:"关闭"otherButtonTitles:"OK"…

afreecatv 回放下载_行车记录仪怎么看回放?行车记录仪停车后能自动录像吗

点击上面蓝色字↑↑↑即可免费订阅&#xff01;请喜欢的朋友请转发和分享&#xff0c;让更多朋友看到汽车知识天天学 (微信号&#xff1a;qiche92 )  行车记录仪最关键的一个部件&#xff0c;它就是储存零件——TF卡(内存卡)。在购买行车记录仪时&#xff0c;TF卡并不是标配&…

linux导出mysql下ssl证书_Linux系统下生成证书 https证书

平时都是用oneinstack加密https现在因为本地调试 需要https就找到这篇文章Linux系统下生成证书生成秘钥key,运行:$ openssl genrsa -des3 -out server.key 20481会有两次要求输入密码,输入同一个即可输入密码然后你就获得了一个server.key文件.以后使用此文件(通过openssl提供的…

lstm原始论文_有序的神经元——ON-LSTM模型浅析

尽管最近出现的Transformer系列的模型在nlp领域内很流行&#xff0c;但RNN仍然有着重要的地位。本文介绍的模型来自于ICLR 2019的最佳论文之一&#xff0c;它针对自然语言具有语法分层的特点&#xff0c;对原有的LSTM模型的结构做出了改进&#xff0c;使得新模型不仅具有更好的…

malloc函数详解

一、原型&#xff1a;extern void *malloc(unsigned int num_bytes); 头文件&#xff1a;#include <malloc.h> 或 #include <alloc.h> (注意&#xff1a;alloc.h 与 malloc.h 的内容是完全一致的。) 功能&#xff1a;分配长度为num_bytes字节的内存块 说明&#xf…

c++ 航空管理系统_浅谈航站楼能源管理系统的设计与应用

蒋超萍江苏安科瑞电器制造有限公司 江苏江阴 214400 【摘要】根据航站楼的特点&#xff0c;从航站楼能源消耗现状、能源管理系统的功能、系统架构、子系统以及能源的优化调度方案五个方面介绍了航站楼能源管理系统的设计&#xff0c;并对节能效果进行了预测。关键词&#xff1a…

mysql 线性表_线性表之顺序存储,基本操作

/*九大基本操作(不同的存储结构实现的代码不同)此处用一维数组的动态分配&#xff1a;InitList(&L);//初始化表&#xff0c;Length(L);LocateElem(L,e);GetElem(L,i);ListInsert(&L,i,e);ListDelete(&L,i,&e);PrintList(L);Empty(L);DestoryList(&L);*//*静…