【问题标题】:Which is a good algorithm for solving this algorithmic puzzle?哪个是解决这个算法难题的好算法?
【发布时间】:2012-07-11 09:04:12
【问题描述】:

给我的金额是 50 美元。 我得到了一些面额,比如 1 美元、2 美元、5 美元等,这些面额的数量例如 1、5、6 意味着 1 枚硬币/1 美元的钞票,5 枚硬币/2 美元的钞票和 6 枚 5 美元的硬币/钞票。 我必须找出这些硬币可以用来形成这个 50 美元的数量。 我正在尝试一种有效的算法来尽可能快地解决这个问题。 请注意,金额永远不会超过 60 美元。

有人可以建议我可以使用哪种算法来解决这个问题吗? 到目前为止,我已经为这个问题编写了一个递归解决方案,但它对于我的目的来说太慢了。我很快就会在这里发布。

【问题讨论】:

  • 听起来你要么在这里发布作业或挑战......应该看看另一个地方,比如代码高尔夫 (codegolf.stackexchange.com)。如果您的 recursion 很慢,请考虑一下“缓存递归”,这在您的情况下会很好用(请记住,您可以先排序以获取最高费用。
  • @RedX :是的,我知道背包问题,但那是为了更轻或相等的重量/数量。
  • @Bruce:嗯,这不是作业/挑战。在任何在线活跃的编码竞赛中搜索这个问题。如果你找到它。立即删除这个问题。反正我还有暑假,所以没有质疑这是作业

标签: c dynamic coin-change


【解决方案1】:

我同意这里不是做作业的地方,但仍然......提问者并不期望得到解决方案,他只是在问一个方向。让我们不要让问题不必要地开放

看看Integer factorization

【讨论】:

  • 因式分解并不是特别有用。分区可能会更好。
  • 嗯,这不是作业/挑战。在任何在线主动编码竞赛中搜索这个问题。如果你找到它。立即删除这个问题。反正我还有暑假,所以毫无疑问这是家庭作业
  • @friendzid:上面的评论是给你的
  • @AjaxAristodemos:好的。这可以作为一个背包问题来解决。这最适用于任意硬币(非质数)。在您的问题中,您提到硬币 1 美元、1 美元和 5 美元,它们是素数。通过分解原始数字,您可以轻松判断(通过比较加权列表)答案是否为 0。拥有两个硬币和因子的加权列表,您只需要计算组合 - 简单的数学
猜你喜欢
  • 2012-01-25
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
相关资源
最近更新 更多