首页 > 其他分享 >书籍叠放

书籍叠放

时间:2023-09-02 20:00:39浏览次数:33  
标签:11 10 int widths books 长度 叠放 书籍

题目描述

书籍的长、宽都是整数对应[l, w] (长,宽)。如果书A的长宽度都比B 长宽 大时,则允许将 B 排列放在 A 上面。 现在有一组规格的书籍,书籍叠放时要求书籍不能做旋转 请计算最多能有多少个规格书籍能叠放在一起

输入描述

  • 输入:books = [[20,16],[15,11],[10,10],[9,10]]
  • 说明:总共有 4 本书籍
  • 第一本书的长度为 20 宽度为 16
  • 第二本书的长度为 15 宽度为 11
  • 依次类推
  • 最后一本书的长度为 9 宽度为 10

输出描述

  • 输出:3
  • 说明:最多 3 个规格的书籍可以叠放到一起,从下到上依次为:[[20,16],[15,11],[10,10]]

用例

--输入
[[20,16],[15,11],[10,10],[9,10]]
--输出
3

题目解析

由题意可知,假设存在A、B两本书,如果B能够叠放在A上面,需要满足 A 的长度和宽度均要大于B的长度和宽度。

存放书籍数据的是一个二维数组,由此可以对二维数组进行排序。 首先根据书本的长度进行排序,书本长度相同的情况下,书本宽度降序排列。如下图

书籍叠放_java

  • 通过观察数据可以发现,在保证长度升序排列(当长度相同,根据宽度降序排列)的情况下
  • 问题可以转化为求数组的 最长严格递增子序列
  • 如上图例子就是问题转化为了求数组 [11, 13, 11, 18, 16] 的 最长严格递增子序列
  • 那么最长的递增子序列是 [11, 13, 18]

show code

import java.util.Arrays;
import java.util.Objects;
import java.util.Scanner;


/**
 * desc :  <a href="https://fcqian.blog.csdn.net/article/details/127711745">书籍叠放</a>
 * <p>
 * create time : 2023/8/19 15:34
 */
public class BookStack {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();

        String[] split = line.replace("[", "").replace("]", "").split(",");
        int n = split.length;

        int[][] books = new int[n / 2][2];
        int idx = 0;
        for (int i = 0; i < n / 2; i++) {
            books[i][0] = Integer.parseInt(split[idx++]);
            books[i][1] = Integer.parseInt(split[idx++]);
        }

        //bookStack(books);
    }

    private static void bookStack(int[][] books) {
        // 按照长度进行升序排列,若长度相同则按照宽度降序排列.
        Arrays.sort(books, (a, b) -> Objects.equals(a[0], b[0]) ? b[1] - a[1] : a[0] - b[0]);

        // 数组已经经过排序,然后这个时候把 第二列数据单独提取出来.
        int n = books.length;
        int[] widths = new int[n];

        for (int i = 0; i < books.length; i++) {
            widths[i] = books[i][1];
        }

        // 然后接下来的问题变成了寻找 最长子序列 长度的问题.
        longestLIS(widths);
    }

    private static void longestLIS(int[] widths) {
        int start = 0,n = widths.length;

        int[] book = new int[n];

        for (int i = 0; i < widths.length; i++) {
            // 二分查找当前元素在 book 数组中的位置.
            int left = 0,right = start;

            // 需要处理当前的数据需要放到 book 数组中的哪一个位置.
            int target = widths[i];

            while(left < right) {
                int mid = (right + left) / 2;
                if(book[mid] >= target) {
                    right = mid;
                } else {
                    left = mid + 1;
                }
            }
            if(left == start) {
                start++;
            }
            book[left] = target;
        }

        System.out.println(start);
    }
}

标签:11,10,int,widths,books,长度,叠放,书籍
From: https://blog.51cto.com/u_16079703/7334756

相关文章

  • 基本经典的NLP书籍
    以下是几本经典的自然语言处理(NLP)书籍:"SpeechandLanguageProcessing:AnIntroductiontoNaturalLanguageProcessing,ComputationalLinguistics,andSpeechRecognition"byDanielJurafskyandJamesH.Martin-这是一本广泛使用的教材,介绍了自然语言处理的基本概......
  • 运动控制-CodeSys编程书籍
    网上流传的陆国君PDF书籍<<PLC综合开发利器-CodeSys基础编程及应用指南>>很不错,这本书网上有两个版本556页是新的版本,423页是老的版本,不过内容差异不大.423页是老的版本下载:url80.ctfile.com/f/25127180-539049426-f8f96c(访问密码:551685)......
  • 统计学 书籍 量化向
    董可人​金融等2个话题下的优秀答主​ 关注 编辑推荐1,615人赞同了该回答本篇偏学术。因为我自己做高频,所以首先提两本相关的学术著作。一本是2011年的论文集EconophysicsofOrder-drivenMarkets,收录了一系列关于盘口和高频数据建......
  • 亚马逊删除了人工智能生成的欺骗作者署名的书籍
    在社交媒体的强烈反对之后,亚马逊已经删除了六本以在世作者的名义出版的人工智能生成的书籍,未经她的同意。尽管误导性内容最终在周二被删除,但作者,资深出版业作家简·弗里德曼(JaneFriedman)担心,亚马逊和其他公司缺乏明确,连贯的政策为其他作者将来面临类似的争议敞开了大门。“我预......
  • 机器学习方面各层次书籍推荐
    1基础强数学型1.1FoundationsofMachineLearning豆瓣评分9.0(103人)有大量的数学公式推到和课后习题,用来提升对于机器学习原理公式的理解 1.2统计学习方法李航+b站带读  2入门型漫画机器学习入门零基础机器学习 ......
  • C/C++经典书籍
    记录四本C/C++的经典书籍。最经典的莫过于1988年出版的《TheCProgrammingLanguage》第二版1.C1.1零基础:CPrimerPlus,SixthEdition,作者:StephenPrata,2013年出版,涵盖C11标准1.2C语言作者巨著(适合有C基础的阅读):TheCProgrammingLanguage,SecondEdition,作者:Denni......
  • 2021 书单推荐 | 15 本高分 AI 书籍,统统免费读
    By超神经内容提要:目前,市面上的人工智能书籍并不少,作为一名人工智能爱好者,该如何筛选书单?新年伊始,KDnuggets整理了一份AI书单,请大家按需取用。关键词:AI书单  机器学习数据科学专注于机器学习、大数据、分析学的顶级网站KDnuggets,近期整理了一份书单,共15本书籍,涵盖机器学......
  • 学雷达怎么入门?雷达专业必备的理论书籍
    1.引言大家好!我是调皮哥,目前研三,尚未毕业,研究生阶段主要是做一些毫米波雷达的应用,对线性调频连续波雷达的一些基本原理算是有一些了解吧。如今盲审已过,剩下的时间准备把手头的项目做做,接着准备毕业论文答辩,然后在有空的时候顺便给大家分享一些雷达方面的学习经验、问题解答,以及做一......
  • Linux精品书籍下载
    Linux精品书籍Linux命令行第2版出版日期2019年3月5日502页4.7星1740评(2023-7-21)带你从第一次敲击终端键盘,到在最流行的Linuxshell(或命令行)Bash中编写完整的程序。在学习的过程中,你将学到几代经验丰富、善于躲避鼠标的大师们传授下来的永恒技能:文件导航、环境配置、......
  • 30天自制操作系统与操作系统真相还原书籍+源代码整理免费下载
    文件列表1.操作系统真相还原.7zhttps://lphco.lanzouj.com/icDqH12wwxsj密钥:a2dy2.30天自制操作系统.7zhttps://lphco.lanzouj.com/iLfDq12wx0od密钥:7jy93.30天自制操作系统压缩包自解压程序.exe防止没有7ziphttps://lphco.lanzouj.com/ilBju12wx2ub密钥:7sap4.操......