518. 零钱兑换 II - 力扣(LeetCode) (leetcode-cn.com)
经典的背包问题
将这题转化为背包问题就是,一个容量为amount的背包一共有coins个物品。装满这个背包有几种方法
定义状态:dp表示的是当背包容量为i是装满这个背包一共有几种方法
初始化dp数组
因为dp[0]表示的是当背包容量为0时的方法,因为这时什么都没装所以只有一种方法
dp [0]=1
在背包问题中我们先遍历物品在遍历容量这里也是一样
完整代码
int change(int amount, int* coins, int coinsSize){
int dp[10000]={0};
dp[0]=1;
for(int i=0;i<coinsSize;i++)
{
for(int j=1;j<=amount;j++)
{
if(j-coins[i]>=0)
dp[j]+=dp[j-coins[i]];
}
}
return dp[amount];
}