題目連結: 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;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay