題目連結: https://zerojudge.tw/ShowProblem?problemid=d269
# 解題思路
先將數值排序好後,計算連續的三邊長促成的三角形,可以構成最大的三角形
(記得要判斷一下,要是能夠促成三角形的三邊長喔)
# 程式碼
#include<bits/stdc++.h> | |
using namespace std; | |
int main() { | |
int t, n, i; | |
double A[10000]; | |
cin>>t; | |
while(t--) { | |
cin>>n; | |
for(i = 0; i < n; i++) { | |
cin>>A[i]; | |
} | |
sort(A, A+n); | |
double area = 0.0, tmp, s; | |
for(i = 2; i < n; i++) { | |
if(A[i-2]+A[i-1] <= A[i]) | |
continue; | |
s = (A[i-2]+A[i-1]+A[i])/2; | |
tmp = s*(s-A[i-2])*(s-A[i-1])*(s-A[i]); | |
if(area < tmp) | |
area = tmp; | |
} | |
area = sqrt(area); | |
printf("%.2lf\n", area); | |
} | |
return 0; | |
} |