3-2空间中有N个顶点(顶点坐标用x,y,z表示),从中找出能构成三角形图形的最大面积,输出该面积。
#include<stdio.h>
#include<math.h>
int main() {
int n,m=0;
double a,b,c,p,res[1000],s[1000][3];
scanf("%d",&n);
for (int i = 0; i < n; i++) {
scanf("%lf %lf %lf",&s[i][0],&s[i][1],&s[i][2]);
}
for (int i = 0; i < n - 2; i++) {
for (int j = i + 1; j < n - 1; j++) {
for (int k = j + 1; k < n; k++) {
a = sqrt(pow(s[i][0]-s[j][0], 2) + pow(s[i][1] - s[j][1], 2) + pow(s[i][2] - s[j][2], 2));
b= sqrt(pow(s[i][0] - s[k][0], 2) + pow(s[i][1] - s[k][1], 2) + pow(s[i][2] - s[k][2], 2));
c= sqrt(pow(s[k][0] - s[j][0], 2) + pow(s[k][1] - s[j][1], 2) + pow(s[k][2] - s[j][2], 2));
if (a + b > c && a + c > b && b + c > a) //判断是否可以构成三角形。
{
p = (a + b + c) / 2; //计算半周长
res[m] = sqrt(p * (p - a) * (p - b) * (p - c)); //套用海伦公式,计算面积
m++;
}
}
}
}
double max = res[0];
for (int i = 1; i < n; i++) {
if (res[i] > max) {
max = res[i];
}
}
printf("%.2f",max);
return 0;
}