从可乐机中填写杯子(算法)

时间:2014-06-14 22:09:11

标签: algorithm

这是一个面试问题,有人会给我一些暗示吗?我正在考虑DFS或BFS,但是,我无法从脑海中想出一个明确的解决方案。

  

三台焦炭机。每个都有两个值min&最大,这意味着如果   你从这台机器上得到可乐,它会为你加载一个随机的音量   范围[min,max]。给出杯子尺寸n和最小苏打量m,显示   如果可以从这些机器上制作它。

1 个答案:

答案 0 :(得分:2)

这是假设您不允许溢出杯子。如果你可以溢出它,你可以随时使用它。

让我们用(min1,max1),(min2,max2),(min3,max3)标记机器。 a1,a2和a3显示您使用每台机器的次数。

我们需要找到a1,a2和a3才能满足:

Condition 1 : a1*min1 + a2*min2 + a3*min3 >= m
Condition 2 : a1*max1 + a2*max2 + a3*max3 <= n

显然,不需要找到填充杯子的最佳方式(最小化a1 + a2 + a3),因此您可以简单地使用DFS。

您使用条件2作为深度限制(意味着如果条件2未满足您在图表中停止更深入),并且如果您达到条件1,则自己得到答案(返回是)。如果您完成搜索并找不到答案,请返回否。

虽然看到这是一个面试问题但我真的怀疑DFS或BFS是解决问题的方法。这可能很容易超时m和n值。