Tôi có một số sách và một kệ sách. Tôi muốn đặt càng nhiều sách lên kệ càng tốt nhưng tôi có một quy tắc. Tất cả các kích thước của sách (chiều cao, chiều rộng và chiều sâu) sẽ tạo thành một chuỗi không tăng trên giá.
Điều này có nghĩa là mọi cuốn sách đều phải cao ít nhất là những cuốn sách sau nó. Tương tự như vậy đối với chiều rộng và chiều sâu. Bạn không thể xoay sách để hoán đổi chiều cao, chiều rộng và chiều sâu của chúng.
Bạn nên viết một chương trình hoặc chức năng đưa ra kích thước của tất cả các sách làm đầu ra đầu vào hoặc trả về số lượng sách tối đa tôi có thể đặt trên giá.
Đầu vào
- Danh sách các bộ ba số nguyên dương trong đó mỗi bộ ba xác định chiều cao, chiều rộng và chiều sâu của một cuốn sách.
- Sẽ có ít nhất một bộ ba trong danh sách đầu vào.
- Hai cuốn sách có thể có cùng độ dài dọc theo bất kỳ số lượng kích thước nào.
Đầu ra
- Một số nguyên dương duy nhất, số lượng sách tối đa phù hợp trên giá tuân theo quy tắc.
Thời gian phức tạp
Thuật toán của bạn nên có đa thức độ phức tạp trong trường hợp xấu nhất trong số lượng sách. Điều này có nghĩa là các ví dụ về độ phức tạp thời gian sau đây đều hợp lệ: O (N ^ 3), O (log (N) * N ^ 2), O (N) và các độ phức tạp sau không hợp lệ: O (2 ^ N), O (N!), O (N ^ N).
Ví dụ
Đầu vào => Đầu ra
(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
Đây là mã golf nên mục ngắn nhất sẽ thắng.
Một thử thách sắp xếp cuốn sách thú vị liên quan: Sắp xếp sách .