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

【Java|golang】1105. 填充书架---动态规划

给定一个数组 books ,其中 books[i] = [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。

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

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

需要注意的是,在上述过程的每个步骤中,摆放书的顺序与你整理好的顺序相同。

例如,如果这里有 5 本书,那么可能的一种摆放情况是:第一和第二本书放在第一层书架上,第三本书放在第二层书架上,第四和第五本书放在最后一层书架上。
每一层所摆放的书的最大高度就是这一层书架的层高,书架整体的高度为各层高之和。

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

示例 1:

在这里插入图片描述

输入:books = [[1,1],[2,3],[2,3],[1,1],[1,1],[1,1],[1,2]], shelfWidth = 4
输出:6
解释:
3 层书架的高度和为 1 + 3 + 2 = 6 。
第 2 本书不必放在第一层书架上。
示例 2:

输入: books = [[1,3],[2,4],[3,2]], shelfWidth = 6
输出: 4

提示:

1 <= books.length <= 1000
1 <= thicknessi <= shelfWidth <= 1000
1 <= heighti <= 1000

    public int minHeightShelves(int[][] books, int shelfWidth) {int length = books.length;int[] dp = new int[length + 1];for (int i = 1; i <= length; i++) {int width=0;int height=0;dp[i]=Integer.MAX_VALUE;for (int j = i-1; j >=0; j--) {if (shelfWidth<(width+=books[j][0])){break;}height=Math.max(height,books[j][1]);dp[i]=Math.min(dp[i],dp[j]+height);}}return dp[length];}

在这里插入图片描述

func minHeightShelves(books [][]int, shelfWidth int) int {length := len(books)dp := make([]int,length + 1)for i := 1; i <= length; i++ {width,height:=0,0dp[i]=math.MaxInt32for j := i-1; j >=0; j-- {if width+=books[j][0];shelfWidth<width{break}if height<books[j][1] {height=books[j][1]}if dp[j]+height<dp[i] {dp[i]=dp[j]+height}}}return dp[length]
}

在这里插入图片描述

相关文章:

【Java|golang】1105. 填充书架---动态规划

给定一个数组 books &#xff0c;其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先选几本书放在书架上&#xff08;它们的厚度之和小于等于书架的宽度 shelfWidt…...

linux基础命令

linux基础命令 一、linux命令 熟悉账务linux命令对运维的好处是巨大的&#xff0c;只有熟悉了命令咱们在运维的操作上才能如鱼得水。 系统信息 arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q …...

【三十天精通Vue 3】 第十八天 Vue 3的国际化详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue 3 国际化概述1.1 国际化的概念1.2 国际化的作用1.3 V…...

02 - 学会提问

学会提问 一、引言 1.1 GPT简介 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer架构的大型预训练语言模型。 凭借其强大的文本生成、理解和处理能力&#xff0c;GPT已在诸如自然语言处理、机器翻译、文本摘要等多个领域取得了显著的…...

Java经典的Main方法面试题

mian方法是做什么用的&#xff1f; main方法是Java程序的入口方法&#xff0c;JVM在运行的时候会首先查找main方法不用main方法如何运行一个类&#xff1f; 不行&#xff0c;没有main方法我们不能运行Java类 在Java7之前&#xff0c;你可以通过使用静态初始化运行Java类。但是&…...

世界大学电子电气工程TOP10,国内大学哪家强?

EE究竟是什么专业 ? 在中国&#xff0c;工程系中跟电相关的专业&#xff0c;一般都切分得非常细。有电子工程、电气工程、通信工程、信息工程、自动化、测控仪器等。但在国外&#xff0c;一般把这些领域都归类到 Electrical Engineering 中&#xff0c;也就是我们常说的EE。 …...

5.3 牛顿-科茨公式

学习目标&#xff1a; 理解微积分基础知识&#xff0c;例如导数和微分的概念。学习牛顿-科茨公式的推导过程。这个公式实际上是使用泰勒公式对被积函数进行展开&#xff0c;并使用微积分的基本原理进行简化得到的。学习如何使用牛顿-科茨公式进行数值积分。这通常涉及到将被积…...

全注解下的SpringIoc 续2-bean的生命周期

spring中bean的生命周期 上一个小节梳理了一下Spring Boot的依赖注入的基本知识&#xff0c;今天来梳理一下spring中bean的生命周期。 下面&#xff0c;让我们一起看看bean在IOC容器中是怎么被创建和销毁的。 bean的生命周期大致分为四个部分&#xff1a; #mermaid-svg-GFXNEU…...

【VQ-VAE代码实战】Neural Discrete Representation Learning

【VQ-VAE代码实战】Neural Discrete Representation Learning 0、前言1、简介2、Basic IdeaLoss3、代码Load DataVector Quantizer LayerEncoder & Decoder ArchitectureTrainPlot LossView ReconstructionsView EmbeddingReference0、前言 论文地址:基于神经网络的,离散…...

gpt3.5和gpt4区别-gpt3.5和gpt4

gpt系列 GPT系列是OpenAI公司开发的一组基于人工智能深度学习技术的自然语言处理模型。GPT代表Generative Pre-trained Transformer&#xff0c;即预训练生成模型。目前&#xff0c;GPT模型已经推出了三代&#xff08;GPT-1&#xff0c;GPT-2&#xff0c;GPT-3&#xff09;&am…...

java获取当前系统时间

在Java中&#xff0c;可以使用以下几种方法获取当前系统时间&#xff1a; 方法1&#xff1a;使用java.util.Date类 java import java.util.Date; public class Main { public static void main(String[] args) { Date date new Date(); System.out.println("当前时间&…...

pbootcms自动配图出图插件

pbootcms文章无图自动出图配图插件的优点 1、提高文章的可读性和吸引力&#xff1a;插入图片可以丰富文章的内容和形式&#xff0c;增强读者的阅读体验和吸引力&#xff0c;提高文章的点击率和转化率。 2、节省时间和精力&#xff1a;手动添加图片需要花费大量时间和精力去寻找…...

手动测试台架搭建,让你的车载测试更轻松

目录&#xff1a;导读 引言 1、概述 2、主要内容 3、汽车测试台架分类 4、汽车测试台架分类 5、汽车测试台架分类台架测试输人台架硬件搭建CANoe台架搭建 6、台架测试输入&#xff1f; 7、需求规范是功能测试用例设计来源测试结果的判断﹔包括∶客户需求(功能规范)需求分…...

分组双轴图:揭示数据中的关联性和趋势变化

简介 分组双轴图是一种数据可视化图表&#xff0c;指有多个&#xff08;≥2&#xff09;Y轴的数据图表&#xff0c;多为分组柱状图折线图的结合&#xff0c;图表显示更为直观&#xff0c;可以很好地展示不同指标之间的关系&#xff0c;帮助用户更好地理解数据&#xff0c;做出…...

MATLAB函数封装1:生成QT可以调用的.dll动态链接库

在进行相关算法的开发和设计过程中&#xff0c;MATLAB具有特别的优势&#xff0c;尤其是对于矩阵运算的处理&#xff0c;具有很多现成的方法和函数可以进行调用&#xff0c;同时MATLAB支持把函数封装成不同的语言方便完成算法的集成。 这里记录利用MATLAB封装成C动态链接库&…...

【算法题】2400. 恰好移动 k 步到达某一位置的方法数目

题目&#xff1a; 给你两个 正 整数 startPos 和 endPos 。最初&#xff0c;你站在 无限 数轴上位置 startPos 处。在一步移动中&#xff0c;你可以向左或者向右移动一个位置。 给你一个正整数 k &#xff0c;返回从 startPos 出发、恰好 移动 k 步并到达 endPos 的 不同 方法…...

探索【Stable-Diffusion WEBUI】的插件:骨骼姿态(OpenPose)

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;骨骼姿态&#xff08;OpenPose&#xff09;系列插件&#xff08;二&#xff09;插件&#xff1a;PoseX&#xff08;三&#xff09;插件&#xff1a;Depth Lib&#xff08;四&#xff09;插件&#xff1a;3D …...

MySQL数据落盘原理(redo、undo、binlog、2PC、double write等。)

文章目录 前言一、架构图1、MySQL架构图2、InnoDB架构图 二、落盘分析1.第一阶段2.第二阶段3.第三阶段4.第四阶段5.第五阶段6.第六阶段 三、总结 前言 在上一章中我们聊到了事务有四大特性&#xff1a;原子性、一致性、隔离性、持久性。本篇文章就持久性重点聊一下&#xff0c…...

智加科技+舍弗勒,首发量产正向开发的智能重卡冗余转向

对于自动驾驶赛道来说&#xff0c;感知、规划和控制&#xff0c;除了计算平台、算法等核心上层软硬件支持&#xff0c;底盘控制系统同样是关键一环。事实上&#xff0c;从Demo到规模化量产&#xff0c;更好的车身控制能力以及冗余备份&#xff0c;也是自动驾驶公司迈入2.0阶段的…...

C++类的模拟实现

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了简单模拟实现string类 C类的模拟实现 文章目录 C类的…...

intv_ai_mk11真实案例分享:中小企业如何用该模型降本提效做内容生产

intv_ai_mk11真实案例分享&#xff1a;中小企业如何用该模型降本提效做内容生产 1. 中小企业内容生产的痛点与机遇 在当今内容为王的时代&#xff0c;中小企业面临着巨大的内容生产压力。每天需要产出大量文案、产品介绍、营销内容、客服回复等&#xff0c;但往往受限于人力成…...

AST 是什么?费曼 + 大白话 + 画图,30 秒彻底懂

我用最简单、最形象、最不绕弯的方式给你讲清楚&#xff0c;保证你马上能听懂&#x1f447;一、AST 代码的骨架结构图全称&#xff1a;Abstract Syntax Tree 抽象语法树一句话&#xff1a;AST 就是把代码拆成逻辑结构&#xff0c;去掉所有标点、空格、格式&#xff0c;只保留 …...

intv_ai_mk11惊艳输出集:RAG技术通俗解释、电商详情页开头、朋友圈爆款文案

intv_ai_mk11惊艳输出集&#xff1a;RAG技术通俗解释、电商详情页开头、朋友圈爆款文案 1. 什么是intv_ai_mk11 AI对话机器人 intv_ai_mk11是一款基于7B参数Llama架构的AI对话助手&#xff0c;运行在GPU服务器上。它能够理解自然语言并生成高质量的文本回复&#xff0c;适用于…...

单片机通信协议详解:IIC、SPI、UART与CAN对比

1. 单片机通信协议概述在嵌入式系统开发中&#xff0c;单片机的通信能力直接影响着整个系统的架构设计和性能表现。作为一名有着十年嵌入式开发经验的工程师&#xff0c;我经常需要根据项目需求选择合适的通信协议。目前主流的单片机通信方式包括IIC、SPI、UART/USART、CAN等&a…...

EasyAnimation性能优化指南:确保动画流畅运行的7个关键点

EasyAnimation性能优化指南&#xff1a;确保动画流畅运行的7个关键点 【免费下载链接】EasyAnimation A Swift library to take the power of UIView.animateWithDuration(_:, animations:...) to a whole new level - layers, springs, chain-able animations and mixing view…...

仅用200行代码重构内存管理模块:某AI平台将GPU服务器月成本压至$1,840的独家策略(限时开源)

第一章&#xff1a;Python 智能体内存管理策略Python 的内存管理并非由开发者直接操控&#xff0c;而是由解释器内置的智能体协同完成——包括引用计数、循环垃圾回收器&#xff08;GC&#xff09;和内存池机制三者构成动态平衡系统。这一“智能体”在运行时持续感知对象生命周…...

WebPlotDigitizer终极指南:从科研图表到结构化数据的完整解决方案

WebPlotDigitizer终极指南&#xff1a;从科研图表到结构化数据的完整解决方案 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 在科研和…...

手机号码定位查询工具:3分钟快速部署,轻松查询号码归属地

手机号码定位查询工具&#xff1a;3分钟快速部署&#xff0c;轻松查询号码归属地 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitco…...

OpenClaw环境迁移:gemma-3-12b-it配置备份与恢复指南

OpenClaw环境迁移&#xff1a;gemma-3-12b-it配置备份与恢复指南 1. 为什么需要环境迁移方案 上周我的主力开发机突然硬盘故障&#xff0c;导致所有数据丢失。最让我头疼的不是代码仓库——它们都有远程备份&#xff0c;而是那套精心调校的OpenClawgemma-3-12b-it环境。花了整…...

短视频 SEO 优化能给企业带来什么好处_短视频 SEO 如何优化视频标题和描述

短视频 SEO 优化能给企业带来什么好处_短视频 SEO 如何优化视频标题和描述 在当今数字化时代&#xff0c;短视频平台已经成为了企业营销和品牌推广的重要渠道。短视频的传播范围和影响力远不止于视频内容本身&#xff0c;背后的搜索引擎优化&#xff08;SEO&#xff09;策略同…...