首页 > 代码库 > 给定4根长度的线段,求组成四边形的最大面积

给定4根长度的线段,求组成四边形的最大面积

 

解题关键:最大面积即4个点都在其外接圆上时的面积。

$p = (a + b + c + d)/2$

$s = \sqrt {(p - a)(p - b)(p - c)(p - d)}$

 只是知道结论,证明过后补

 

#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>using namespace std;typedef long long ll;double a[10];int main(){    ll t;    scanf("%lld",&t);    ll i;    for(i=1;i<=t;i++){        scanf("%lf%lf%lf%lf",a,a+1,a+2,a+3);        sort(a,a+4);        if(a[3]>=a[0]+a[1]+a[2]){            printf("Case %lld: -1\n",i);            continue;        }        double p=(a[1]+a[2]+a[3]+a[0])/2;        double s=sqrt((p-a[0])*(p-a[1])*(p-a[2])*(p-a[3]));        printf("Case %lld: %.6lf\n",i,s);            }} 

 

给定4根长度的线段,求组成四边形的最大面积