有n个棍子,棍子i的长度为ai。想要从中选出3根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0.
n [3,100]
ai [1,10^6]
solution:
int n,a[MAX_N];
void solve(){
int ans=0;
//让i<j<k,这样棍子就不会被重复选中
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
for(int k=j+1;k<n;k++){
int len=a[i]+a[j]+a[k];//周长
int ma=max(a[i],max(a[j],a[k]));//最长棍子的长度
int rest=len-ma;//其余两根棍子的长度之和
if(ma<rest){
ans=max(ans,len);
}}}}
printf("%d\n",ans);
}