硬币变更制作算法

时间:2016-02-03 06:02:04

标签: algorithm

对于每个i≥0,对于某些整数常数c> 1,硬币具有c i 的值。 1。 例如,如果c = 3,则您的硬币值为1(= 3 0 ),3,9(= 3 2 ),27,......

您需要设计一种算法,给定整数值n,使用最少数量的硬币对n进行更改。您可以假设每个面额c i 的硬币数量不受限制,且c i ≤n。

我已经提出了贪心算法,但我坚持这个问题:

显示任何最优解最多只有c - 1个值为c i 的硬币,对于任何i。

我明白了,我知道它是如何运作的,但我不知道如何用语言表达/展示它。有人可以指点我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

通常,贪婪算法可以证明是正确的,因为如果存在(据称)最优解决方案,其结构与您的算法产生的结果不同,您可以将其更改为您的算法产生的并显示结果是好的或更好。

在这种情况下:假设(出于矛盾的缘故)存在使用 c 或更多值为 c i 的硬币的最佳解决方案。那么,你怎么能以贪婪算法的方式改进这个解决方案(从而表明以不同方式做事的解决方案实际上并不是最优的?)