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