书籍叠放问题

2025-03-29 18:51:08阅读 10评论 0

题目描述

假设书本的叠放有这样的规则,当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

代码实现

// 叠书问题
// 获取输入
const input = "[[20,16],[15,11],[10,10],[9,10]]"
// 转为数组
const arr = JSON.parse(input)
const len = arr.length


const dp = new Array(len).fill(1)

let max = 1

for (let i = 0; i < len; i++) {
    let current = arr[i]
    for (let j = 0; j < i; j++) {
        let pre = arr[j]
        if (current[0] < pre[0] && current[1] < pre[1]) {
            dp[i] = dp[j] + 1
        }else{
            dp[i] = dp[j]
        }
    }
    max = Math.max(max, dp[i])
}
console.log(max)

还没有评论,来说两句吧