三角形
有n个棍子,棍子i的长度为ai。想要从中选出3根棍子组成周长尽可能长的三角形。请输入出最大的周长,若无法组成三角形则输出为0。
#include<stdio.h>
#include<stdlib.h>
int compInc(const void *a, const void *b);
int main()
{
int n;
int k[100];
int i=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&k[i]);
}
qsort(k, n, sizeof(k[0]), compInc);
int c=0,len=0,rest=0,flag=0;
for(c=n-1;c>2;c--)
{
len=k[c]+k[c-1]+k[c-2];//这里的算法就包含了两边之长大于最大的边的意思,所以只用取用排序后最大到最小。
rest=k[c-1]+k[c-2];
if(rest>k[c])
{
flag=1;
break;
}
}
if(flag)
{
printf("%d\n",len);
}
else
{
printf("NO\n");
}
return 0;
}
int compInc(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
//这里使用了库函数里的快速排序