1,
int change(int amount, vector<int>& coins) {
int *dp=new int[amount+1]();
dp[0]=1;//相当于用0种硬币兑换0元的方案数,什么都不给,所以一种方案
for(int i=0;i<coins.size();++i)
for(int j=0;j<=amount;++j)
{
if(j<coins[i]) dp[j]=dp[j];
else
dp[j]=dp[j]+dp[j-coins[i]];
}
return dp[amount];
}
2,改进
int change(int amount, vector<int>& coins) {
int *dp=new int[amount+1]();
dp[0]=1;
for(int i=0;i<coins.size();++i)
for(int j=coins[i];j<=amount;++j)
{
dp[j]=dp[j]+dp[j-coins[i]];
}
return dp[amount];
}