这是一个面试问题,有人会给我一些暗示吗?我正在考虑DFS或BFS,但是,我无法从脑海中想出一个明确的解决方案。
三台焦炭机。每个都有两个值min&最大,这意味着如果 你从这台机器上得到可乐,它会为你加载一个随机的音量 范围[min,max]。给出杯子尺寸n和最小苏打量m,显示 如果可以从这些机器上制作它。
答案 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值。