تابعی بنویسید که مقدار پول و لیستی از مقادیر سکهها را دریافت کند و تعداد روشهای مختلف ساخت مقدار پول با استفاده از سکههای داده شده را بشمارد.
مثال
coins_combinations(4, [1, 2]) ➞ 3
# ترکیبات ممکن:
# 1+1+1+1 = 4
# 1+1+2 = 4
# 2+2 = 4
نکات
- ترتیب سکهها اهمیت ندارد. یعنی ترکیبات مثل
1+1+2
و2+1+1
برابر هستند. - تعداد سکهها نامحدود است.
Assert.Equal(3, Backendbaz.CoinsCombinations(4, new int[] { 1, 2 })); Assert.Equal(4, Backendbaz.CoinsCombinations(10, new int[] { 5, 2, 3 })); Assert.Equal(0, Backendbaz.CoinsCombinations(11, new int[] { 5, 7 })); Assert.Equal(1022, Backendbaz.CoinsCombinations(300, new int[] { 5, 10, 20, 50, 100, 200, 500 })); Assert.Equal(0, Backendbaz.CoinsCombinations(301, new int[] { 5, 10, 20, 50, 100, 200, 500 })); Assert.Equal(760, Backendbaz.CoinsCombinations(199, new int[] { 3, 5, 9, 15 })); Assert.Equal(18515, Backendbaz.CoinsCombinations(419, new int[] { 2, 5, 10, 20, 50 }));
نظرات