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; }
相关文章推荐
- 在eclipse中运行mapreduce程序全过程,问题详解
- 【ZOJ1729】Hidden Password【最小表示法】
- POJ-2479 Maximum sum
- 玩转python爬虫之cookie使用方法
- jQuery 选择器
- Float(浮动)
- windows下nginx+FastCGI+Django完全攻略
- canvas.save()与canvas.restore()
- meminfo,df,
- Better Business Grammar Train Summary
- hmac_sha1 签名
- Lua学习笔记-9.1章-协同程序
- 【ZOJ-2006】Glass Beads【最小表示法】
- StringUtils的isBlank与isEmply 的用法
- VB.NET FTP传输及Win7下的FTP服务配置
- meminfo,df,
- 极值问题
- 毕业5年决定人的一生-- 大家千万不要错过这篇文章
- 【SDOI2013】【BZOJ3197】assassin
- Spring实现AOP的4种方式