题目:
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。

题解思路:
方法一:二维dp+完全背包
函数代码:
class Solution {
public:
int change(int amount, vector<int>& coins) {
int n=coins.size();
int sum=0;
for(int i=0;i<n;i++)
{
sum+=coins[i];
}
vector<vector<int>>dp(n+1,vector<int>(amount+1,0));
for(int i=0;i<=n;i++)
{
dp[i][0]=1;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<=amount;j++)
{
if(j>=coins[i-1])
{
dp[i][j]=dp[i-1][j]+dp[i][j-coins[i-1]];
}
else
{
dp[i][j]=dp[i-1][j];
}
}
}
return dp[n][amount];
}
};

612

被折叠的 条评论
为什么被折叠?



