给你n个线段让你任意组成三角形,每根只能用一次求组出来的三角形的面积的和最大为多少
思路:贪心,将木棒排序由大到小便利能组合成三角形的情况,就是最大值
#include<bits/stdc++.h>
using namespace std;
int a[30];
bool pan(int a,int b,int c){
if(a+b<=c)return 0;
if(a+c<=b)return 0;
if(b+c<=a)return 0;
return 1;
}
int main(){
int N;
while(scanf("%d",&N)&&N){
for(int i=0;i<N;i++){
cin>>a[i];
}
sort(a,a+N);
double k=0.0;
for(int i=N-1;i>=2;i--){
if(pan(a[i],a[i-1],a[i-2])){
// cout<<1<<endl;
double p=(a[i]+a[i-1]+a[i-2])/2.0;//必须2.0,2是错的
k+=sqrt(p*(p-a[i])*(p-a[i-1])*(p-a[i-2]));
i-=2;
}
}
printf("%.2lf\n",k);
}
}