本帖最后由 caoyueyan 于 2017-12-8 11:39 编辑
提供我的思路:士兵从分x轴移动和y轴移动两个方向移动,所以分两步
假设有n个士兵,其坐标是(x1,y1)...(xn,yn)
A.x轴移动至整齐的排列
1求(x,0)的坐标,在x的范围内,求一个x坐标到(x1,0),(x2,0)....(xn,0)点的距离最小,x是整齐一列的中位数(奇数一个?,偶数两个?)
B.先让士兵y轴移动至y坐标相等
1,求(0,y)的坐标,求在y范围内,求一个y坐标到这些(0,y1),(0,y2).....(0,yn)点的距离最小
可以用中位数求解
http://blog.csdn.net/wyg1997/article/details/50969438
例题是
没排好时x坐标 1 1 2 3 3 最小是1 最大是3 1到3的中位数是2 奇数中位数在(n+1)/2点 偶数在n/2 ~ n/2+1处
排好后 0 1 2 3 4中位数是2
y坐标-2 2 2 3 3 中位数是2 所以 y坐标取2
所以排列好后中间那个士兵x,y坐标是(2,2),可以推出其他士兵的坐标(0,2)(1,2)(2,2)(3,2)(4,2)
算出x轴移动了(1-0)+(1-1)+(2-2)+(3-3)+(|3-4|)=2
算出y轴移动了(|-2-2|)+(2-2)+(2-2)+(3-2)+(3-2)=6
一共移动了8