Eu tenho alguns livros e uma estante de livros. Gostaria de colocar o maior número possível de livros na prateleira, mas tenho uma regra. Todas as dimensões dos livros (altura, largura e profundidade) devem formar uma sequência não crescente na prateleira.
Isso significa que todos os livros devem ser pelo menos tão altos quanto os que são depois dele. O mesmo vale para a largura e profundidade. Você não pode girar os livros para trocar sua altura, largura e profundidade.
Você deve escrever um programa ou função que, considerando as dimensões de todos os livros como saída, retorne o número máximo de livros que posso colocar na estante.
Entrada
- Uma lista de trigêmeos de números inteiros positivos, onde cada trigêmeo define a altura, largura e profundidade de um livro.
- Haverá pelo menos um trio na lista de entrada.
- Dois livros podem ter os mesmos comprimentos em qualquer número de dimensões.
Resultado
- Um número inteiro positivo único, o número máximo de livros que cabem na prateleira, obedecendo à regra.
Complexidade do tempo
Seu algoritmo deve ter um polinômio de complexidade de pior caso no número de livros. Isso significa que, por exemplo, todas as seguintes complexidades de tempo são válidas: O (N ^ 3), O (log (N) * N ^ 2), O (N) e as seguintes são inválidas: O (2 ^ N), O (N!), O (N ^ N).
Exemplos
Entrada => Saída
(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
Este é o código de golfe, portanto a entrada mais curta vence.
Um desafio relacionado à classificação de livros: Book Stack Sort .