当前位置: 首页 > 知识库问答 >
问题:

为什么贪婪算法不适用于某些不同于美国货币的货币?

龚永新
2023-03-14

要赚取6.39美元,您可以选择:

  • 5美元钞票

但是,如果货币的硬币重量分别为1、7和10,那么它就不起作用。我的问题是,为什么贪婪算法只对少数权重有效?给定的权重集满足贪婪算法,同时又是最优的条件是什么?

共有2个答案

於宾白
2023-03-14

在这篇文章中可以找到一些答案:http://arxiv.org/pdf/0801.0120v2.pdf

(至少根据他们的摘要,我没有读完整篇论文)

李耀
2023-03-14

大卫·皮尔森在“变更问题的多项式时间算法”中研究了这个精确的问题。

不幸的是,它没有提供一个优雅的数学性质来回答这个问题。它基于这样一个事实,即如果贪婪算法不起作用,反例将在有限数量的值之间,这些值具有使检查每个值便宜的属性。

 类似资料:
  • 我理解硬币兑换问题的贪婪算法(用尽可能少的硬币支付特定金额)是如何工作的——它总是选择面额最大但不超过剩余金额的硬币——并且它总是为特定的硬币组找到正确的解决方案。 但对于某些硬币集,贪婪算法会失败。例如,对于集合和总和30,贪婪算法首先选择25,剩下5,然后选择5个1,总共6枚硬币。但是,对于最少数量的硬币,解决方案是选择15枚硬币两次。 一组硬币必须满足什么条件,才能让贪婪算法找到所有总数的最

  • 我正在使用来自openweathermap的json API数据来获取有关特定城市的信息。 几天前还好好的,现在由于某种原因,每个标有塞尔维亚国家代码“RS”的城市都不能工作了。http://api.openweathermap.org/data/2.5/weather?q =塞尔维亚贝尔格莱德 如果我使用其他国家的城市,例如这个,它是有效的:http://api.openweathermap.o

  • 我正在尝试使用函数。 而它应该打印$符号或美元? 我使用linux主机。 谢谢

  • 首先,是的,这是我的硬件,我觉得很难,所以我真的很感激一些指导。 我需要证明对于当

  • 问题内容: 一直有人告诉我,永远不要用或类型来代表金钱,这一次我向您提出一个问题:为什么? 我敢肯定有一个很好的理由,我根本不知道这是什么。 问题答案: 因为浮点数和双精度数不能准确代表我们用于货币的基数10的倍数。这个问题不仅仅针对Java,而且还针对任何使用base 2浮点类型的编程语言。 在基数10中,您可以将10.25编写为1025 * 10 -2(整数乘以10的幂)。IEEE-754浮点

  • 问题内容: 人们总是被告知永远不要用或类型代表金钱,这一次我向您提出一个问题:为什么? 我敢肯定有一个很好的理由,我根本不知道这是什么。 问题答案: 因为浮点数和双精度数不能准确表示我们用于赚钱的基数10的倍数。这个问题不仅仅针对Java,而且还针对任何使用base 2浮点类型的编程语言。 在基数10中,您可以将10.25编写为1025 * 10 -2(整数乘以10的幂)。IEEE-754浮点数是