{1,3,5} 面值的硬币; 总和为11。 找出能够组成这个总和所需的最小硬币数量 (我们可以使用任意数量的每个面值的硬币)
我搜索了这个硬币问题,特别是使用动态规划方法的运行时间复杂度,但是没有在任何地方找到解释。
如何计算非动态方法的复杂度,然后将其改为动态方法? (不是贪心)
编辑:
这里是一个实现,需要对其进行分析。
public int findCoinChange(int[] coins, int sum,int count) {
int ret = 0, maxRet = -1;
if(sum ==0)maxRet = count;
else if(sum < 0)maxRet = -1;
else{
for(int i:coins){
ret = findCoinChange(coins, sum - i,count+1);
if(maxRet< 0)maxRet = ret;
else if(ret >=0 && ret < maxRet){
maxRet = ret;
}
}
}
if(maxRet < 0)return -1;
else return maxRet;
}
在我看来,这似乎是组合爆炸。然而,我不确定如何推导出此运行时间复杂度。