Bir gezgin , şehir dışında bir otelde n gün kalmak zorundadır . Nakit dışında ve kredi kartının kullanım süresi dolmuş. Ama n bağlantılı altın bir zinciri var .
Bu oteldeki kural, sakinlerin her sabah kiralarını ödemeleri gerektiğidir. Gezgin, her gün için altın zincirin bir linkini ödemek için müdürle bir anlaşmaya varıyor. Ancak yönetici, her gün ödeme yaparken yolcunun zincire en az zararı vermesini talep eder. Başka bir deyişle, mümkün olduğu kadar az bağlantıyı kesmek için bir çözüm bulmak zorunda.
Bir bağlantının kesilmesi üç alt zincir oluşturur: biri yalnızca kesilen bağlantıyı ve diğeri her birini içerir. Örneğin, 8 uzunluğundaki bir zincirin üçüncü bağlantısını kesmek, uzunluğun alt zincirlerini oluşturur [2, 1, 5]. Yönetici değişiklik yapmaktan mutluluk duyuyor, bu nedenle gezgin ilk gün uzunluğu 1 olan zincir ile, ardından ikinci gün uzunluğu 2 olan zincirle geri ödeyebiliyor.
Kodunuz n uzunluğunu girmeli ve minimum uzunluktaki kesmek için bir bağlantı listesi vermelidir .
Kurallar :
- n ,> 0 olan bir tam sayıdır.
- Bağlantılar için 0 veya 1 tabanlı dizinlemeyi kullanabilirsiniz.
- Bazı numaralar için çözüm benzersiz değil. Örneğin,
n = 15
her ikisi de[3, 8]
ve[4, 8]
geçerli çıktılarsa. - Listeyi döndürebilir veya herhangi bir makul ayırıcı ile yazdırabilirsiniz.
- Bu kod golf , yani bayt cinsinden en kısa kod kazanır.
Test durumları :
Input Output (1-indexed)
1 []
3 [1]
7 [3]
15 [3, 8]
149 [6, 17, 38, 79]
Detaylı örnek
İçin n bağlantıları 3 ve uzunluk subchains 8 sonuçlar kesme = 15, [2, 1, 4, 1, 7]
. Bu geçerli bir çözüm çünkü:
1 = 1
2 = 2
3 = 1+2
4 = 4
5 = 1+4
6 = 2+4
7 = 7
8 = 1+7
9 = 2+7
10 = 1+2+7
11 = 4+7
12 = 1+4+7
13 = 2+4+7
14 = 1+2+4+7
15 = 1+1+2+4+7
Sadece bir kesim ile hiçbir çözüm yoktur, bu yüzden bu en uygun çözümdür.
ek
Bu sorunun tamsayı bölümleme ile ilgili olduğunu unutmayın. Biz bir bölme aradığınız P ait n böyle 1'den tüm tamsayılar olduğu n bir alt kümesidir en az bir patition sahip P .
İşte bu sorun için olası bir algoritma hakkında bir YouTube videosu .
1+2
. İkinci 2-link zinciri nereden geldi?