您需要设计一种算法,给定整数值n,使用最少数量的硬币对n进行更改。您可以假设每个面额c i 的硬币数量不受限制,且c i ≤n。
我已经提出了贪心算法,但我坚持这个问题:
显示任何最优解最多只有c - 1个值为c i 的硬币,对于任何i。
我明白了,我知道它是如何运作的,但我不知道如何用语言表达/展示它。有人可以指点我正确的方向吗?
答案 0 :(得分:4)
通常,贪婪算法可以证明是正确的,因为如果存在(据称)最优解决方案,其结构与您的算法产生的结果不同,您可以将其更改为您的算法产生的并显示结果是好的或更好。
在这种情况下:假设(出于矛盾的缘故)存在使用 c 或更多值为 c i 的硬币的最佳解决方案。那么,你怎么能以贪婪算法的方式改进这个解决方案(从而表明以不同方式做事的解决方案实际上并不是最优的?)