Sikke değişim problemi çok iyi belgelenmiştir. Mezheplerin sikke sonsuz kaynağı göz önüne alındığında x_1için x_msize kalmış eklemek kombinasyonların sayısını bulmak için gerekmez y. Örneğin, verilen x = {1,2,3}ve y = 4dört kombinasyonları vardır:
{1,1,1,1}{1,1,2}{1,3}{2,2}
Giriş
Bozuk para değiştirme sorununun birkaç varyasyonu vardır. Bu varyasyonda iki ek kısıtlamamız var:
- Her mezhep en az bir kez kullanılmalıdır.
- Toplamda sabit sayıda bozuk para kullanılmalıdır.
Örneğin, verilen x = {1,2,3}, y = 36ve n = 15nerede nkullanılması gerekir sikke toplam sayısıdır, dört kombinasyonları alıyorum:
{1,2,2,2,2,2,2,2,3,3,3,3,3,3,3}(1 olanlar, 7 ikişer, 7 üçlü){1,1,2,2,2,2,2,3,3,3,3,3,3,3,3}(2 tane, 5 ikişer, 8 üçlü){1,1,1,2,2,2,3,3,3,3,3,3,3,3,3}(3 kişi, 3 ikişer, 9 üçlü){1,1,1,1,2,3,3,3,3,3,3,3,3,3,3}(4 adet, 1 ikişer, 10 üçlü)
Meydan okuma
Zorluk, enumerateseçtiğiniz dilde yukarıda verilen tüm kombinasyonları numaralandıran bir işlev yazmaktır :
- Mezheplerin listesi. Örneğin
{1,5,10,25}. Listeleri veya dizileri kullanabilirsiniz. yHer kombinasyonun toplamını ifade eden negatif olmayan bir tam sayı .nToplam jeton sayısını gösteren negatif olmayan bir tam sayı .
Argümanların sırası önemli değil. Noktasız işlevlere izin verilir.
enumerateİşlevin çıktısı bir kombinasyon listesi olmalıdır. Her kombinasyon benzersiz olmalı ve ntoplanan tam sayıların bir listesi olmalıdır y. Her mezhep, her kombinasyonda en az bir kez görünmeli ve hiçbir kombinasyon eksik olmamalıdır. Tamsayıların ve kombinasyonların sıralaması önemli değildir. Çıktı için listeler veya diziler kullanabilirsiniz.
Aşağıdaki uç durumları unutmayın:
- Her ikisi de
yvensıfırsa ve mezheplerin listesi boşsa, çıktı bir kombinasyon, yani boş kombinasyon (yani{{}}) listesidir . - Aksi takdirde,
ysıfır isen, sıfırsa veya mezheplerin listesi boşsa, çıktı sıfır kombinasyonlarının bir listesidir (yani{}). - Daha genel olarak,
ymezheplerin toplamındanndaha az veya mezhep sayısından daha azsa, çıktı sıfır kombinasyonlarının bir listesidir.
Puanlama, tüm programın bayt cinsinden büyüklüğüne dayalı olacaktır. Bunun enumerateişlevi, yardımcı işlevleri, içe aktarma ifadelerini, vb. İçerdiğini unutmayın. Test senaryolarını içermez.
ymezheplerin toplamından daha az ise özyinelemeli çözümünüzün bir noktasında mezhepler listesinin boş olduğu temel duruma ulaşırsınız. Bu nedenle, cevap olacaktır {}(yani çözüm bulunamadı). Eğer ndaha az mezhepler sayısından daha olduğunu o zaman sonunda nerede baz davayı ulaşırsınız n = 0ama y != 0. Dolayısıyla, cevap yine olacak {}.