Cebimde 15 dolar var. Aynı şekilde, değişiklik yapmayan bir mağazadayım. Göz atarken, 10 ABD doları (vergi dahil) olan bir öğeyi tespit ederim. Para kaybetmeden bu ürünü alabilir miyim?
Bu durumda cevap evettir. Benim 15 $ nasıl bölünür olursa olsun (bir 10 ve bir 5 veya üç 5s, ya da başka bir şey), her zaman tam 10 $ gerekli olacaktır.
İkinci bir örnek olarak, cebimde 0.16 $ var. Tam olarak ne kadar para ödeyebilmeliyim?
Possible Divisions:
0.01, 0.05, 0.10
0.01, 0.05 x 3
0.01 x 16
Guaranteed Exact Change:
0.01, 0.05, 0.06, 0.10, 0.11, 0.15, 0.16
Cebimde 0.27 $ varsa ne olur?
Possible Divisions:
0.01 x 2, 0.25
0.01 x 2, 0.05, 0.10 x 2
0.01 x 2, 0.05 x 3, 0.10
0.01 x 2, 0.05 x 5
0.01 x 27
Guaranteed Exact Change:
0.01, 0.02, 0.25, 0.26, 0.27
Yukarıdaki durumda, her zaman mükemmel bir değişiklik yapacağım sadece birkaç miktar para vardı.
Senin görevin
A) tamsayı miktarda para ve B) olası mezheplerin bir listesini girdi olarak alır ve mükemmel bir değişiklik yapmam gereken para miktarlarının bir listesini çıkarır. Girdi STDIN veya program veya işlev için bağımsız değişkenler olabilir. Girdi biçimlendirmesinde çok katı olmayacağım; dil biçimlerinizin dizileriyle eşleşebilir.
Belki Daha Ayrıntılı Bir Açıklama
Cebimde bir dizi olası para gösterisinden oluşan belirli bir miktar param var. 8 dolarım varsa ve olası mezheplerin 2 $ ve 3 $ olduğunu biliyorsanız, o zaman cebimde olabilecek çok farklı fatura kombinasyonları var. Bunlar 2+2+2+2
ve 3+3+2
. Kesin miktarda para üretebilmek için, sadece cebimdeki faturaları kullanarak bu miktarı üretebilmeliyim. Dört tane 2 yaşım olsaydı, üretebilirdim 2, 4, 6, or 8
. İki 3s ve 2 olsaydı, üretebilirim 2, 3, 5, 6, or 8
Bu kombinasyonlardan hangisinin aslında cebimde olduğunu bilmediğim için son cevabım azaltıldı 2, 6, 8
. Bunlar , toplam miktar ve olası mezhepler göz önüne alındığında, cebimden üretebileceğimi bildiğim değerler .
Elle Hesaplanan Örnek G / Ç
7 [3, 4]
3, 4, 7 //only one possible division into 3 + 4
7 [3, 2]
2, 3, 4, 5, 7 //the only division is 3 + 2 + 2
6 [2, 3, 4]
6 //divisions are 2+2+2, 3+3, 2+4
16 [1, 5, 10, 25] //this represents one of the examples above
1, 5, 6, 10, 11, 15, 16
27 [1, 5, 10, 25] //another example from above
1, 2, 25, 26, 27
1500 [1, 5, 10, 25, 100, 500, 1000, 2000]
500, 1000, 1500
600 [100, 500, 1000, 2000]
100, 500, 600
600 [200, 1, 5, 10, 25, 100, 500, 1000, 2000]
600
6 [2, 3, 4]
. Can 2+2+2
3 yapmak değil ve 3+3
2 ve 4 yapamaz?