先排序,然后用最大的数减去第二大的数,再减去第三大的数,如过结果大于0,就再减去第四大的树,如果结果小于0,就加上第四大的数,如此循环到最后一个数
比如楼主给的例子
5
5
8
13
27
14
排序后是
27
14
13
8
5
5
运行过程是27-14=13>=0,所以13-13=0>=0,所以0-8=-8<=0,所以-8+5=-3<=0,所以-3+5=2
最终的最小差距应该是2
两堆的分配应该是
27,5,5
14,13,8
我做过一些实验,当差距可以为0的时候,这种算法是可以得出正确结果的.因为没有通过数学证明,如果有什么问题,请多指正