【发布时间】:2021-08-17 05:49:41
【问题描述】:
我正在尝试将我的递归解决方案转换为动态解决方案,但我在转换时遇到了问题。我正在尝试计算尽可能少的硬币以创造价值。我正在做的是我将所有可能的硬币放入一个向量中,最后在主函数中我会找到我的向量的最小值,这将是我的答案
int rec(vector<int>coins,int n,int sum,int counter)
{
if(sum==0)
{
return 1;
}
if(n==0)
{
return 0;
}
int total=rec(coins,n-1,sum,counter);
if(sum-coins[n-1]>=0)
{
total+=rec(coins,n,sum-coins[n-1],counter+1);
if(sum-coins[n-1]==0)
{
vec.push_back(counter+1);
}
}
return total;
}
【问题讨论】:
-
根据硬币的价值,你不需要动态规划,因为贪婪的选择就足够了。