如何解决贪婪算法-硬币系统规范的准则
给定一个硬币系统,可以用来确定该硬币系统是否规范的条件是什么?我确实读了几篇论文,但没有任何可靠的证据。
我知道贪婪算法仅适用于规范硬币系统。我试图弄清楚硬币= {1、2、3、6}是否是规范的硬币系统。我能知道用来决定这一点的标准是什么吗?
解决方法
有关O(n^3)
算法的信息,请参见https://graal.ens-lyon.fr/~abenoit/algo09/coins2.pdf,以回答给定的一组硬币是否规范。
对于您的系统,任何数量的最佳更改:
- 必须使用少于2个1s,否则您可以改用2个。
- 必须使用少于3 2s,否则您可以使用6s。
- 必须使用少于2个3s,否则您可以使用6个3s。
此外,在任何数量的最佳变化中,贪婪算法将找到所有6s。因此,如果有一个贪婪算法有误的金额,那么在删除6s之后,仅由其他硬币形成的金额一定是错误的。
任何其他最好的硬币只有2 * 3 * 2 = 12个其他组合,所以只需全部尝试:[],[1],[2],[1,2],[2,2 ],[1,2,2],[3],[1,3],[2,3],[1,3 ]。
在所有这些情况下,贪婪算法都将获胜,因此您的系统是规范的。
您可以对任何硬币系统进行类似的计算。对于完全不同于真实硬币系统的输入来说,它并不总是那么快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。