我正试图找到一个简单问题的直接答案..这就是..
在d(1)= 1,d(2)= 7,d(3)= 10的面额系统中,你有一个n = 10的硬币变换算法。
现在从教科书中给出了算法的实现..
Greedy_coin_change(denom, A)
{
i = 1;
While (A > 0) {
c = A/denom[i];
print(“use “+c+”coins of denomination”+denom[i];
A = A – C * denom[i];
i = i+1;
}
}
结果不会是:“使用10个面额1的硬币”?
这是因为当然,根据我的理解,denom [1] = 1,denom [2] = 7,denom [3] = 10.正确吗?
如果是这种情况,算法不会被认为是最佳的,对吗?
但是,代码上方有一个小语句,我不确定它是否应该作为代码的一部分,这里是:
denom [1]> denom [2]> ...> denom [n] = 1。
答案 0 :(得分:1)
denom[1] > denom[2] > ... > denom[n] = 1.
表示输入中的项目应从最大到最小排序。
将其作为算法的前提条件(即,这对算法起作用是必要的)。
因此,如果给定1,7,10
,则denom
将为{10,7,1}
,并且会选择demon[1]
中的1个。