Kitaplarım ve kitaplığım var. Rafa olabildiğince çok kitap koymak istiyorum ama bir kuralım var. Kitapların tüm boyutları (yükseklik, genişlik ve derinlik) rafta artmayan bir dizi oluşturmalıdır.
Bu, her kitabın en azından kendinden sonraki kitaplar kadar yüksek olması gerektiği anlamına gelir. Aynı şey genişlik ve derinlik için de geçerlidir. Yükseklik, genişlik ve derinliklerini değiştirmek için kitapları döndüremezsiniz.
Tüm kitapların boyutlarını girdi çıktısı olarak veren veya rafa koyabileceğim en fazla kitap sayısını döndüren bir program veya işlev yazmalısınız.
Giriş
- Her üçlünün bir kitabın yüksekliğini, genişliğini ve derinliğini tanımladığı pozitif tamsayıların üçlülerinin bir listesi.
- Giriş listesinde en az bir üçüz olacaktır.
- İki kitap, herhangi bir sayıda boyut boyunca aynı uzunluklara sahip olabilir.
Çıktı
- Tek bir pozitif tamsayı, kurala uyan rafa uyan maksimum kitap sayısı.
Zaman karmaşıklığı
Algoritmanızın kitap sayısında en kötü zaman karmaşıklığı polinomu olmalıdır . Bu, örneğin aşağıdaki zaman karmaşıklıklarının hepsinin geçerli olduğu anlamına gelir: O (N ^ 3), O (log (N) * N ^ 2), O (N) ve aşağıdakilerin geçersiz olduğu: O (2 ^ N), O (N!), O (N ^ N).
Örnekler
Giriş => Çıkış
(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
Bu kod golf yani en kısa giriş kazanır.
İlgili ilginç bir kitap sıralama meydan okuma: Kitap Yığını Sırala .