题目描述
假设书本的叠放有这样的规则,当A书的长度和宽度都大于B书时,可以将其B书置于A的上方,堆叠摆放,请设计一个程序,根据输入的书本长宽,计算最多可以堆叠摆放多少本书?

输入
[[16,15], [13, 12], [15, 14]]

输出
3

说明
这里代表有3本书,第1本长宽分别为16和15,第2本长宽为13和12,第3本长宽为15和14,它们可以按照 [13, 12],[15, 14],[16,15] 的顺序堆叠,所以输出3

【分析】
动态规划,实质是求最长递增子序列,但本题有两个因素需要考虑,可以通过排序将长度置为有序,这样其实就是对宽度求最长递增子序列,且可能存在长度相同的情况,在更新dp数组判定时,也要考虑到

【实现】

// 获取输入
const input = "[[16,15], [16, 14], [13, 12], [15, 14]]"
// 转为数组
const arr = JSON.parse(input)
const len = arr.length// dp数组 dp[i]表示前i本书的最长子序列长度
// 默认为1即每个序列本身就是一个子序列,长度为1
const dp = new Array(len).fill(1)// 对输入的数组按照长度、宽度的大小进行排序
arr.sort((a, b) => {if (a[0] !== b[0]) {return a[0] - b[0]} else {return a[1] - b[1]}
})// 结果,初始为1,即至少可以放一本书
let res = 1// 从第2本书向前找,看看加上它能不能增加长度
for (let i = 1; i < len; i++) {// 要新加的书的长度和宽度const cur = arr[i]for (let j = 0; j < i; j++) {// 要比较的书的长度和宽度const pre = arr[j]if (cur[0] > pre[0] && cur[1] > pre[1]) {// 新加的书的长宽均大于当前书,说明这本书可以加在当前书的递增序列之后// 判断此时的递增子序列最大值dp[i] = Math.max(dp[i], dp[j] + 1)}// 更新最大值结果res = Math.max(res, dp[i])}
}console.log(res);

华为机试练习(七)书籍叠放问题相关推荐

  1. 【华为机试真题 Python实现】2022年4、5月高频机试题

    文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...

  2. 【华为机试 Python实现】华为机试题集合(已更新171篇)

    文章目录 新手指引 数据结构基础 华为机试真题系列 牛客网华为机试系列 Python 八股文系列 <华为机试真题详解>专栏定价99.9 包含 <华为机试真题>的所有题目. 包含 ...

  3. 【华为机试】死记硬背没思路?一般人我劝你还是算了吧

    大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...

  4. 2022/7/26华为机试,Q2,上机迷迷糊糊的,搞完突然醒悟,自抱自泣!三道题附带答案

    21:52 2022/7/26华为机试三道题附带答案 备注:未ac,华为不难,难的是个人很难进入答题状态! 第一道 给定一个字符串,是工作记录的日志时间,时间为四段格式,AA:BB:CC:DDD 其中 ...

  5. 大师兄教你如何过华为机试

    大师兄教你如何过华为机试 宝典1-内功心法 大华为这个大数据时代土豪金海量式的招聘又要开始了!!! 近期听说大华为的校招机试马上就要开始了,由于华为软件岗位的招聘只有技术面跟机试是与技术有关的内容,所 ...

  6. 华为机试330分python实现

    华为机试330分python实现 转载声明:本文是本人原创.其他人转载请注明来源(CSDN)附url地址.本人保留追究一切法律责任的权利,谢谢. 第一题100分,代码完成100% 第二题100分,完成 ...

  7. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

  8. 牛客网--华为机试在线训练10:字符个数统计

    牛客网–华为机试在线训练10:字符个数统计 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在ACSII码范围内(0~127).不在范围内的不作统计. 输入描述: 输入N个字符,字符在A ...

  9. 牛客网–华为机试在线训练9:提取不重复的数

    牛客网–华为机试在线训练9:提取不重复的数 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺 ...

  10. 牛客网–华为机试在线训练8:合并表记录

    牛客网–华为机试在线训练8:合并表记录 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个 ...

最新文章

  1. PlateSpin forge V2P回推步骤。
  2. Cloud一分钟 | 电商月将至,腾讯云DCDB助力电商企业应对支付洪峰
  3. html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...
  4. 数据结构期末复习之散列表的查找
  5. linux与pc机网络通信,PC宿主机和目标机通信方式
  6. Unsupported major.minor version 51.0 jdk版本错误解决方案 eclipse版
  7. android ttc字体,android从ttc字体设置默认字体和字体系列
  8. 42表盘直径是从哪测量_手表的术语中,直径指的是外观直径还是表盘直径?
  9. IDEA启动tomcat控制台出现中文乱码问题完美解决方案(亲测有效)
  10. linux v4l2色调,V4L2下摄像头的详细参数调整
  11. 电信物联网平台对接教程
  12. UIUC云计算概念(chord)
  13. maven中resource配置详解
  14. Photoshop脚本 设置前景色和背景色
  15. 关于javaBean运行后出现Name was not previously introduced as per JSP.5.3的解决方法
  16. 山东办理高新技术企业可以享受的税收优惠
  17. 基于plcsimadvanced实现1500PLC仿真 OUC通讯
  18. 如何提取网页中的blob加密视频
  19. 测试职业发展、高级测试需要知道哪些、P6测试需要知道什么、测试的知识点、测试自我提升、测试圣经
  20. 九龙证券|面板概念股异动!11家布局公司获北上资金抢筹

热门文章

  1. ORB-SLAM2可以说是目前最优秀的基于特征点的视觉SLAM
  2. 中兴服务器车间,走进中兴通讯车间 探秘智能手机生产链(多图)
  3. Github 上火热的十个 Python 项目,从Debug工具到AI水军、量化交易系统。
  4. BLE蓝牙芯片KT1025A程序代码和调试总结
  5. meanShift算法介绍
  6. 开发平台的优势在哪?
  7. 自回避随机行走问题 c语言,醉汉随机行走/随机漫步问题(Random Walk Randomized Algorithm Python)...
  8. 如何在小米9 se(安卓9)安装Xposed框架?
  9. Samba服务器搭建,win10拒绝访问解决方法
  10. 手机号码归属地查询api接口