书籍叠放问题
题目描述
假设书本的叠放有这样的规则,当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)还没有评论,来说两句吧
