/**
求最大凸多边形
给定一些点,输出最大面积的凸边形。输出起始点为x轴最左边的点,按照顺时针方向输出,每个点必须是凸边形的顶点(不输出边上或凸边形内的点)。
输入样例:
13;-3,-3;1,3;2,-4;6,1;-2,-2;4,5;1,-2;1,4;-2,3;-4,1;-1,1;2,2;1,-1
输出样例:
-4,1;-2,3;4,5;6,1;2,-4;-3,-3
注:
输入数据的第一个数为点的数目,然后是分号;再后面就是以分号间隔的点;
点的数目最少为3个,最多为65535,点坐标范围[-1000, 1000];
求最大凸多边形
给定一些点,输出最大面积的凸边形。输出起始点为x轴最左边的点,按照顺时针方向输出,每个点必须是凸边形的顶点(不输出边上或凸边形内的点)。
输入样例:
13;-3,-3;1,3;2,-4;6,1;-2,-2;4,5;1,-2;1,4;-2,3;-4,1;-1,1;2,2;1,-1
输出样例:
-4,1;-2,3;4,5;6,1;2,-4;-3,-3
注:
输入数据的第一个数为点的数目,然后是分号;再后面就是以分号间隔的点;
点的数目最少为3个,最多为65535,点坐标范围[-1000, 1000];
假设输入的点可以组成一个凸多边形。
这道题是一道凸包问题,假设输入可以组成一个凸多边形,程序中没有加以验证。
我的思路是取左端最左下方的点作为边界点1(left),右端的在最右上方的点作为边界点2(right),分上半部分和下半部分来查找的。
(1)先是以left为起点,顺时针扫描到点left右上部分的第一个点p1,然后以p1为起点,顺时针扫描到点p1右上部分的第一个点p2,重复操作,直到找到点right;
(