最少硬币支付问题 c的幂次方证明

假设硬币的面值为c0,c1,...,ck,其中c是一个大于1的整数,k是一个大于等于1的整数。设ai是找n分钱的最优解中面值ci的硬币的数量,那么对于i=0,1,...,k1,有ai<c。这是因为如果ai>=c,那么可以用一个面值ci+1的硬币替换c个面值ci的硬币,从而减少了c-1个硬币,这与最优解矛盾。

设j是满足cj<=n的最大整数,那么贪心算法会选择至少一个面值cj的硬币。如果不选择面值cj或更大的硬币,那么设非贪心解使用bi个面值ci的硬币,对于i=0,1,...,j1,那么有b0c0+b1c1+...+bj1cj1=n。由于n>=cj,所以上式左边大于等于cj。又由于bi<c,所以上式左边小于等于(c1)(c0+c1+...+cj1)=(c1)(cj1)/(c1)=cj1<cj。这与上面推出的左边大于等于cj矛盾。所以不选择面值cj或更大的硬币不能产生最优解。

因此,当硬币面值为c的幂次方时,最少硬币支付问题能使用贪心算法.

posted @   Uzhia  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示