我写了代码,但是输入数据后无法显示结果,不知道是代码的问题还是编译器的问题。
原题如下:
有n根棍子,棍子i的长度为ai。想要从中选出三根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0。
限制条件
3 ≤ n ≤ 100
1 ≤ ai ≤ 10^6
输入
n = 5
a = {2,3,4,5,10}
输出
12(选择3、4、5时)
输入
n = 4
a = {4,5,10,20}
输出
0(无论怎么选都无法组成三角形)
#include <stdio.h>
int max(int a,int b){
return a>b?a:b;
}
void sum(int n,int*a){
int sum=0;
for (int i = 0; i < n; i++)
{
for (int j = i+1; i < n; j++)
{
for (int k = j+1; k < n; k++)
{
int three=max(a[i],max(a[j],a[k]));
int he = a[i]+a[j]+a[k];
int rest = he-three;
if(rest>three)
sum = max(sum,he);
}
}
}
printf("%d",sum);
}
int main(){
int n;//棍子数量
int bian[100];//存放n个边长
scanf("%d",&n);
for (int i = 0; i < n; i++)
{
scanf("%d",&bian[i]);
}
sum(n,bian);
return 0;
}
运行结果如下: