描述
哗啦啦村作为喵哈哈村的对头,于是他们准备给喵哈哈村一个好看。
哗啦啦村的四长老——四先生,就提出了以下问题:
给你n条边,让你从里面选出三条边,组成一个三角形,问你这个三角形最大的面积可以为多少?
如果无论如何都不能组成三角形,输出-1。
输入
第1行:一个整数n,表示边的个数。
第2行,n个整数,表示每条边的边长。
1<=n<=100 1<=a[i]<=100
输出
输出最大面积,无解输出-1.
保留整数即可。
样例输入1
4
1 5 3 4
样例输出1
6
A :
#include<bits/stdc++.h>
using namespace std;
const int maxn = 105;
int a[maxn];
int main() {
int n;
cin >> n;
for(int i = 0; i < n; ++i) {
cin >> a[i];
}
sort(a, a + n);
double max = -1; // 无解输出-1
for (int i = 0; i < n; ++i) {
for (int j = i+1; j < n; ++j) {
for (int k = j+1; k < n; ++k) {
if(a[i] + a[j] <= a[k]) continue; // 两边之和大于第三边
double s = (a[i] + a[j] + a[k]) / 2.0;
double res = sqrt(s * (s-a[i]) * (s-a[j]) * (s-a[k])); // 三角形面积公式
if(res > max) max = res;
}
}
}
printf("%.0f\n", max); // 保留整数
return 0;
}
海伦公式(Heron’s formula/Hero’s formula) :
假设有一个三角形,边长分别为a, b , c,则三角形的面积A可由以下公式求得:
其中