当前位置: 首页 > 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]
}

在这里插入图片描述

http://www.lryc.cn/news/62109.html

相关文章:

  • linux基础命令
  • 【三十天精通Vue 3】 第十八天 Vue 3的国际化详解
  • 02 - 学会提问
  • Java经典的Main方法面试题
  • 世界大学电子电气工程TOP10,国内大学哪家强?
  • 5.3 牛顿-科茨公式
  • 全注解下的SpringIoc 续2-bean的生命周期
  • 【VQ-VAE代码实战】Neural Discrete Representation Learning
  • gpt3.5和gpt4区别-gpt3.5和gpt4
  • java获取当前系统时间
  • pbootcms自动配图出图插件
  • 手动测试台架搭建,让你的车载测试更轻松
  • 分组双轴图:揭示数据中的关联性和趋势变化
  • MATLAB函数封装1:生成QT可以调用的.dll动态链接库
  • 【算法题】2400. 恰好移动 k 步到达某一位置的方法数目
  • 探索【Stable-Diffusion WEBUI】的插件:骨骼姿态(OpenPose)
  • MySQL数据落盘原理(redo、undo、binlog、2PC、double write等。)
  • 智加科技+舍弗勒,首发量产正向开发的智能重卡冗余转向
  • C++类的模拟实现
  • 耐腐蚀高速电动针阀在半导体硅片清洗机化学药液流量控制中的应用
  • 助力工业物联网,工业大数据之ODS层及DWD层建表语法【七】
  • Windows环境下C++ 安装OpenSSL库 源码编译及使用(VS2019)
  • TensorFlow高阶API和低阶API
  • 强训之【参数解析和跳石板】
  • Redis队列Stream、Redis多线程详解(三)
  • MySQL统计函数count详解
  • 实验04:图像压缩(DP算法)
  • 4.19--面试系列之真题版本--redis出现大key怎么解决?Redis 大 Key 对持久化有什么影响?
  • 新手在家做自媒体要如何起步?
  • 易基因:禾本科植物群落的病毒组丰度/组成与人为管理/植物多样性变化的相关性 | 宏病毒组