版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/flyawayl/article/details/79047251
题意
有
思路
很容易想到采用三重循环来枚举所有三角形,复杂度为
更好的办法是先对所有边长进行升序排序得到序列
1. 如果
2. 如果
实现代码
#include <stdio.h>
#include <algorithm>
using namespace std;
const int maxn = 10000 + 5;
int a[maxn];
int getMAXC(int a[], int n) {
sort(a, a + n);
for(int i = n - 1; i >= 2; i++) {
if(a[i] < a[i - 1] + a[i - 2])
return a[i] + a[i - 1] + a[i - 2];
}
return 0;
}
int main() {
int n;
while(scanf("%d", &n) == 1) {
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
printf("%d\n", getMAXC(a, n));
}
return 0;
}
如有不当之处欢迎指出!