问题描述:
有n根棍子,棍子i的长度为a[i],想要从中选出三根棍子组成周长尽可能长的三角形。
请输出最大的周长,若无法组成三角形则输出0。
限制条件:
3<=n<=100
1<=a[i]<=10^6
输入:
5
2 3 4 5 10
输出:
12
codeA:O(n^3)
三重for循环足一列举,并且注意判断三角形存在的必要条件
codeB:O(nlogn)
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n;
int a[110];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int ans=0;
for(int i=0;i<n-2;i++){
int l= a[i]+a[i+1]+a[i+2];
if(a[i] + a[i + 1] > a[i + 2]){
ans = max(ans,l);
}
}
cout<<ans<<endl;
}
/*输入:
5
2 3 4 5 10
输出:
12*/