您的位置:首页 > 其它

1.61 三角形O(nlogn)做法

2016-02-17 14:59 309 查看
书里给出比较无脑的做法,三个for循环复杂度是n的立方。如果先把数列排序,依次判断连续三个数是否能形成三角形,可以把时间复杂度控制在nlogn。
#include<stdio.h>
#include<algorithm>

using namespace std;

int main()
{
int n,a[10],i,ans=0;
scanf("%d",&n);
for(i=0;i<n;++i)
{
scanf("%d",&a[i]);
}
sort(a,a+n);//由小到大
for(i=n-1;i>1;i--)
{
if(a[i]<(a[i-1]+a[i-2]))//可以组成三角形
{
ans=a[i]+a[i-1]+a[i-2];
printf("%d",ans);
return 0;
}
}
printf("%d",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: