本人自己的方法:
#include <iostream>
using namespace std;
int main()
{
//读取边的长度 及各边长
int n,a[100];
cin>>n;
int i=0;
cin>>a[i];i++;
while(cin.get()!='\n'){
cin>>a[i];i++;
}
//冒泡排序 数组从小到大
int temp;
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=a[i];
}
}
}
//寻找最大周长
for(int i=n-1;i>1;i--){
if(a[i-1]+a[i-2]>a[i]){
cout<<a[i-1]+a[i-2]+a[i];
break;
}else{
}
if(i==2){
cout<<"0";
break;
}
}
}
书上的方法复杂度为O(n^3) 我就不展示了 我的是O(n^2)所以不展示
注释提示有复杂度为O(nlogn)的方法 :