gpt4 book ai didi

algorithm - 如果成本与使用每个数字相关联,则找出最大数量

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:29:42 25 4
gpt4 key购买 nike

我已经得到了我所有的钱。现在我知道写下每个数字(1 到 9)所需的成本。那么如何创建最大数量呢?这个问题有动态规划的方法吗?

例子:

可用的总金额 = 2
每个数字(1 到 9)的成本 = 9, 11, 1, 12, 5, 8, 9, 10, 6
输出:33

最佳答案

我认为你不需要动态规划,只需执行以下操作:

  • 尽可能多地选择价格最低的号码。
  • 现在您有了一个数字(仅由一种数字组成)。
  • 用你能负担得起的最大数字替换第一个数字
  • 如果你还有钱,对第二个、第三个等做同样的事情,直到你的钱用完。

为什么会这样:

考虑 11111 > 999991111 > 88888,或者换句话说,最好是:

  • 选择尽可能多的数字,这是通过选择最便宜的数字来完成的。
  • 然后用您能负担得起的最高值(value)的数字替换这些数字,从左边开始(这总是比选择一些更昂贵的数字开始更好)。

优化:

为了有效地做到这一点,丢弃任何比更大数字花费更多的数字:(因为选择那个数字而不是具有更大值(value)的更便宜的数字从来都不是一个好主意)

Given:
9, 11, 1, 12, 5, 8, 9, 10, 6
Removing all those where I put an X:
X, X, 1, X, 5, X, X, X, 6
So:
1, 5, 6

现在您可以对其进行二进制搜索(只需记住哪个数字来自哪个值)(尽管只有 9 位数字,二进制搜索并不能真正为已经很短的运行时间创造奇迹)。

运行时间:

O(n)(有或没有优化,因为 9 是常量)

关于algorithm - 如果成本与使用每个数字相关联,则找出最大数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com