我有一些书和一个书架。我想尽可能多地在书架上放书,但是我有一个规则。书籍的所有尺寸(高度,宽度和深度)应在书架上形成不增加的顺序。
这就是说,每本书必须至少与书本上的书本一样高。宽度和深度也一样。您不能旋转书籍以交换它们的高度,宽度和深度。
您应该编写一个程序或函数,该程序或函数给出所有书籍的尺寸作为输入输出,或者返回我可以放在架子上的最大书籍数量。
输入值
- 正整数的三元组列表,其中每个三元组定义一本书的高度,宽度和深度。
- 输入列表中至少会有一个三元组。
- 两本书可以沿任意多个维度具有相同的长度。
输出量
- 一个正整数,表示服从该规则的书架上可容纳的最大书籍数量。
时间复杂度
您的算法应该在书本数量上具有最坏情况的时间复杂度多项式。这意味着,例如以下时间复杂度均有效:O(N ^ 3),O(log(N)* N ^ 2),O(N)和以下无效:O(2 ^ N), O(N!),O(N ^ N)。
例子
输入=>输出
(1, 1, 1) => 1
(5, 2, 5), (1, 3, 5) => 1
(5, 2, 5), (1, 2, 5) => 2
(2, 2, 2), (2, 2, 2), (2, 2, 2), (1, 3, 6) => 3
(1, 2, 5), (1, 3, 5), (1, 2, 8), (1, 2, 5), (7, 7, 7) => 4
(5, 19, 3), (9, 4, 16), (15, 16, 13), (7, 4, 16), (1, 13, 14), (20, 1, 15), (9, 8, 19), (4, 11, 1) => 3
(1, 1, 18), (1, 13, 7), (14, 1, 17), (8, 15, 16), (18, 8, 12), (8, 8, 15), (10, 1, 14), (18, 4, 6), (10, 4, 11), (17, 14, 17), (7, 10, 10), (19, 16, 17), (13, 19, 2), (16, 8, 13), (14, 6, 12), (18, 12, 3) => 5
这是代码高尔夫球,因此最短的入场券获胜。
一个相关的有趣的书分类挑战:书库分类。
您是说它应该按递减顺序排列吗?如果每本书的高度至少等于其后本书的高度,那就是您得到的,除非每本书的高度相同。
—
mbomb007'5
@ mbomb007是的,将“不减少”更改为“不增加”。
—
randomra'5