我想找到三个数字的第二个最小值。
我有一个获取两个输入数字的黑盒子,黑盒子返回数字之间的最大值。
此外,我有一个黑盒子,返回最小值。
现在我有一个盒子可以输入3个数字作为输入,它需要返回第二个分钟。
你可以帮我解决这个问题吗? 如何仅使用两个黑盒来解决这个问题?谢谢!
答案 0 :(得分:1)
我可以通过黑盒子的三种用途看到这种方法。让我们假设每个元素都是a,b,c。用c找到a和b的最小值。然后你找到这2个答案的最大值,你有第二个分钟。如果只返回b,则会找到a和c的最小值。
答案 1 :(得分:1)
Inputs: a, b, c
Level 1 (filtering out the biggest value):
min(a,b) -> min_ab
min(a,c) -> min_ac
min(b,c) -> min_bc
Level 2 (selecting the highest remaining value, step 1):
max(min_ab, min_bc) -> m*
Level 3 (step 2):
max(m*, min_ac) -> solution
Gives a total of 5 boxes.
a --+--\
| min --\
b -----< max --\
| min --/ max --
c -----< /
| min --------/
\--/
Alternatively you can do 3 maxes first and then 2 mins.