三角形
有 n根棍子,棍子 i的长度为 a i 。想要从中选出 3根棍子组成周长尽可能长的三角形。请输
出最大的周长,若无法组成三角形则输出 0。
用5根棍子组成三角形的例子
限制条件
3 ≤ n ≤ 100
1 ≤ a i ≤ 10 6
输入
n = 5
a = {2, 3, 4, 5, 10}
样例 1
输出
有 n根棍子,棍子 i的长度为 a i 。想要从中选出 3根棍子组成周长尽可能长的三角形。请输
出最大的周长,若无法组成三角形则输出 0。
用5根棍子组成三角形的例子
限制条件
3 ≤ n ≤ 100
1 ≤ a i ≤ 10 6
输入
n = 5
a = {2, 3, 4, 5, 10}
样例 1
输出
12(选择3、4、5时)
方法1如下思路,是一个O(n3)的方法,仍旧是暴力搜索,通过对每一个遍历来找寻最大的三角形
这种方法非常的简单易懂,就是比较当前的三角形周长和最大的相比
代码如下:
#include <iostream>
using namespace std;
#define MAX 50
int main(){
int n,a[MAX];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int ans = 0,max=0;
for(int o=0;o<n;o++){
for(int p=o+1;p<n;p++){
for(int q=p+1;q<n;q++){
if(a[o]+a[p]>a[q]&&a[o]+a[q]>a[p]&&a[p]+a[q]>a[o]){
ans = a[o]+a[p]+a[q];
if(ans>max){
max = ans;
}
}
}
}
}
cout<<max<<endl;
}