感觉这就不是计算几何题,是排序题……
做两次二级排序,关键字是点的x,y坐标值。x优先排序时,计算共线的点 y 的差距绝对值之和,就是所有竖直(南北向)围墙长度;y优先排序时,计算共线点 x 的差距绝对值之和,就是所有横着(东西向)的围墙长度。两个加起来输出就好。
ps:注意凹多形的情况,下面给几组数据就是凹的情况
12
2 0
3 0
0 1
2 1
0 2
1 2
0 3
1 3
2 3
3 3
0 4
2 4
The length of the fence will be 16 units.
8 1 2 1 3 2 1 2 2 3 1 3 2 4 2 4 3 The length of the fence will be 10 units.
代码: