題目連結: 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; | |
| } | 
