平面上N个点求斜率最大的两个点

平面上N个点求斜率最大两个点

1.根据X将N个点排序

2.最大的斜率为max(p[i], p[i+1])

可以证明如果有ABC三个点则AB与BC的斜率一个大于AC另一个则小于AC, k3 = (c - b)/(c - a)k2 + (b -a)/(c-a)k1;

通过反正法可以证明k3在k1和k2之间

p[i], p[i + k]斜率在(p[i ], p[i + 1]) 和(p[i + 1] , p[i + k])之间,然后递归推出最大的斜率为max(p[i], p[i + 1]);


先把N个点按x排序。
斜率k最大值为max(斜率(point[i],point[i+1])) 0<=i
复杂度Nlog(N)。

无论多少个点都可以任意选三个点组成一个三角形,那么斜率最大的边肯定不是通过相邻的两个点,以此可知斜率最大的直线一点是由两个相邻的点画出的。

无论多少个点都可以任意选三个点组成一个三角形,那么斜率最大的边肯定不是通过相邻的两个点,以此可知斜率最大的直线一点是由两个相邻的点画出的。
先把N个点按x排序。
斜率k最大值为max(斜率(point[i],point[i+1])) 0<=i
复杂度Nlog(N)。

你可能感兴趣的:(编程)