为Mices分配孔的最短时间

时间:2014-09-13 16:25:35

标签: algorithm

有n个Mices和n个孔直线放置。每个孔只能容纳1个鼠标。鼠标可以保持在他的位置,从x向右移动一步到x + 1,或者从x向左移动一步到x-1。任何这些动作都需要1分钟。

我们需要找到最短时间,以便为所有小鼠分配孔。

示例:设N = 3,Mices位于= [4,-4,2],孔位于[4,0,5]

然后这里的答案是4。

说明:

Assign mouse at position x=4 to hole at position x=4 : Time taken is 0 minutes 
Assign mouse at postion x=-4 to hole at position x=0 : Time taken is 4 minutes 
Assign mouse at postion x=2 to hole at postion x=5 : Time taken is 3 minutes 

4分钟后,所有小鼠都在洞里。所以答案是4。

我认为对两个数组进行排序然后找到元素的相应差异将达到目的。但是我无法得到天气最小的证据。

所以请帮忙。

1 个答案:

答案 0 :(得分:4)

i1 < i2成为两只老鼠的位置,让j1 < j2成为两个洞的位置。通过案例分析显示

就足够了
max(|i1 - j1|, |i2 - j2|) <= max(|i1 - j2|, |i2 - j1|),

因为在归纳之后,每个分配都可以通过一系列交换转换为已排序的分配,其中这些分配都不会增加完工时间。