#include<bits/stdc++.h>
using namespace std;
int r[1000][3];
int g[1000][3];
int b[1000][3];
int main()
{
int n;
while(cin>>n)
{
int rn=0,gn=0,bn=0;
char c;
int x,y,z;
for(int i=0;i<n;i++)
{
cin>>c>>x>>y>>z;
if(c=='R'){
r[rn][0]=x;
r[rn][1]=y;
r[rn][2]=z;
rn++;
}
else if(c=='G'){
g[gn][0]=x;
g[gn][1]=y;
g[gn][2]=z;
gn++;
}
else if(c=='B'){
b[bn][0]=x;
b[bn][1]=y;
b[bn][2]=z;
bn++;
}
}
double max=0;
if(rn>=3)
{
for(int i1=0;i1<rn-2;i1++)
for(int i2=i1+1;i2<rn-1;i2++)
for(int i3=i2+1;i3<rn;i3++)
{
double d1=sqrt((r[i1][0]-r[i2][0])*(r[i1][0]-r[i2][0])+(r[i1][1]-r[i2][1])*(r[i1][1]-r[i2][1])+(r[i1][2]-r[i2][2])*(r[i1][2]-r[i2][2]));
double d2=sqrt((r[i1][0]-r[i3][0])*(r[i1][0]-r[i3][0])+(r[i1][1]-r[i3][1])*(r[i1][1]-r[i3][1])+(r[i1][2]-r[i3][2])*(r[i1][2]-r[i3][2]));
double d3=sqrt((r[i3][0]-r[i2][0])*(r[i3][0]-r[i2][0])+(r[i3][1]-r[i2][1])*(r[i3][1]-r[i2][1])+(r[i3][2]-r[i2][2])*(r[i3][2]-r[i2][2]));
double l=(d1+d2+d3)/2;
double s=sqrt(l*(l-d1)*(l-d2)*l-d3);
if(s>max)max=s;
}
}
if(gn>=3)
{
for(int i1=0;i1<gn-2;i1++)
for(int i2=i1+1;i2<gn-1;i2++)
for(int i3=i2+1;i3<gn;i3++)
{
double d1=sqrt((g[i1][0]-g[i2][0])*(g[i1][0]-g[i2][0])+(g[i1][1]-g[i2][1])*(g[i1][1]-g[i2][1])+(g[i1][2]-g[i2][2])*(g[i1][2]-g[i2][2]));
double d2=sqrt((g[i1][0]-g[i3][0])*(g[i1][0]-g[i3][0])+(g[i1][1]-g[i3][1])*(g[i1][1]-g[i3][1])+(g[i1][2]-g[i3][2])*(g[i1][2]-g[i3][2]));
double d3=sqrt((g[i3][0]-g[i2][0])*(g[i3][0]-g[i2][0])+(g[i3][1]-g[i2][1])*(g[i3][1]-g[i2][1])+(g[i3][2]-g[i2][2])*(g[i3][2]-g[i2][2]));
double l=(d1+d2+d3)/2;
double s=sqrt(l*(l-d1)*(l-d2)*l-d3);
if(s>max)max=s;
}
}
if(bn>=3)
{
for(int i1=0;i1<bn-2;i1++)
for(int i2=i1+1;i2<bn-1;i2++)
for(int i3=i2+1;i3<bn;i3++)
{
double d1=sqrt((b[i1][0]-b[i2][0])*(b[i1][0]-b[i2][0])+(b[i1][1]-b[i2][1])*(b[i1][1]-b[i2][1])+(b[i1][2]-b[i2][2])*(b[i1][2]-b[i2][2]));
double d2=sqrt((b[i1][0]-b[i3][0])*(b[i1][0]-b[i3][0])+(b[i1][1]-b[i3][1])*(b[i1][1]-b[i3][1])+(b[i1][2]-b[i3][2])*(b[i1][2]-b[i3][2]));
double d3=sqrt((b[i3][0]-b[i2][0])*(b[i3][0]-b[i2][0])+(b[i3][1]-b[i2][1])*(b[i3][1]-b[i2][1])+(b[i3][2]-b[i2][2])*(b[i3][2]-b[i2][2]));
double l=(d1+d2+d3)/2;
double s=sqrt(l*(l-d1)*(l-d2)*l-d3);
if(s>max)max=s;
}
}
for(int i1=0;i1<rn;i1++)
for(int i2=0;i2<gn;i2++)
for(int i3=0;i3<bn;i3++)
{
double d1=sqrt((r[i1][0]-g[i2][0])*(r[i1][0]-g[i2][0])+(r[i1][1]-g[i2][1])*(r[i1][1]-g[i2][1])+(r[i1][2]-g[i2][2])*(r[i1][2]-g[i2][2]));
double d2=sqrt((r[i1][0]-b[i3][0])*(r[i1][0]-b[i3][0])+(r[i1][1]-b[i3][1])*(r[i1][1]-b[i3][1])+(r[i1][2]-b[i3][2])*(r[i1][2]-b[i3][2]));
double d3=sqrt((b[i3][0]-g[i2][0])*(b[i3][0]-g[i2][0])+(b[i3][1]-g[i2][1])*(b[i3][1]-g[i2][1])+(b[i3][2]-g[i2][2])*(b[i3][2]-g[i2][2]));
double l=(d1+d2+d3)/2;
double s=sqrt(l*(l-d1)*(l-d2)*l-d3);
if(s>max)max=s;
}
cout<<max<<endl;
}
return 0;
}
寻找三角形(待调试)
最新推荐文章于 2021-05-26 23:17:19 发布