首先想到的是遍历以得到满足要求的三角形
#include <stdio.h>
#include <stdlib.h>
int findmax(int a, int b, int c)
{
int max;
if(a>b){
max =a;
}else{
max =b;
}
if(max < c)
{
max =c;
}
return max;
}
int main()
{
int n;
int a[200];
int longest = 0;
scanf("%d",&n);
int maxa;
for(int i = 0; i < n;++i)
{
scanf("%d",&a[i]);
}
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];
maxa = findmax(a[i],a[j],a[k]);
int sur = len - maxa;
if(maxa < sur)
{
if(len > longest)
longest = len;