1.61 三角形O(nlogn)做法

来源:互联网 发布:什么交友软件多人用 编辑:程序博客网 时间:2024/04/29 14:25
书里给出比较无脑的做法,三个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;}

1 0
原创粉丝点击