给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。
示例 1:
- 输入: amount = 5, coins = [1, 2, 5]
- 输出: 4
解释: 有四种方式可以凑成总金额:
- 5=5
- 5=2+2+1
- 5=2+1+1+1
- 5=1+1+1+1+1
-
#include <stdio.h> #include <stdlib.h> #include <string.h> int change(int amount,int *coins,int coinsSize){ static int dp[10]; dp[0]=1; for (int i = 0; i < coinsSize; ++i) { for (int j = coins[i]; j <= amount; ++j) { dp[j] += dp[j-coins[i]]; } } return dp[amount]; } int main() { int coins[] = {1,2,5}; int s=change(5,coins,3); printf("%d",s); return 0; }