题目描述:平分凸多边形面积的线段有无数条,求其中最长的线段长度(结果保留六个小数)。
求凸多边形最长的面积平分线,可知最长的分割线一定经过顶点。所以只要求出各个顶点对应的分割线的长度,然后比较取得最长分割线。
1.求该多边形的整体面积,这里需要知道多边形的面积公式
2.多边形的面积可以分解为一个个三角形,而找多边形面积分割线时就要依次将三角形面积相加,当和超过或者刚好等于多边形面积时,就可以在对应边找到分割点
3.求多边形分割点,在所在边上的位置。先求比例ratio,可以通过面积比值求得(三角形同底同高)。通过ratio求得分割点坐标,在求得对应分割线的长度。
4.比较各分割线的长度,求得最长的。
#include<iostream>
#include <cmath>
using namespace std;
typedef struct point{
double x;
double y;
}point;
point p[5001];
double getDarea(int n,point p[]){
//多边形面积Darea
double sum=0;
for(int i=0;i<n-1;i++){
//***n-1
sum+=p[i].x*p[i+1].y-p[i+1].x*p[i].y;
}
sum+=p[n-1].x*p[0].y-p[