问题描述:

n条棍子组成一个三角形,使得三角形周少最大。

方法一:

暴力解则算法复杂度为O(n^3)

#include<stdio.h>
const int MAX_N=105
int main()
{
    void min(int &a,int &b);
    int n,i,j,k,sum=0;
    int ans[MAX_N];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&ans[i]);
    }
    for(i=0;i<n;i++)
    {
        for(j=i+1;j<n;j++)
        {
            for(k=j+1;k<n;k++)
            {
                min(ans[i],ans[j]);min(ans[i],ans[k]);min(ans[j],ans[k]);
                if(ans[i]+ans[j]>ans[k])
                {
                    if(ans[i]+ans[j]+ans[k]>sum)
                    sum=ans[i]+ans[j]+ans[k];
                }
            }
        }
    }
    printf("%d\n",sum);
    return 0;
}
void min(int &a,int &b)
{
    int t;
    if(a>b)
    {
        t=a;a=b;b=t;
    }
}

方法二:

从大到小将棍子排序,然后依次检查棍子是否满足A<B+C的情况,第一次满足的情况即答案,复杂度O(nlogn)

#include<stdio.h>
const int MAX_N=105;
int main()
{
    int n,i,j,sum=0;
    int ans[MAX_N];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&ans[i]);
    }
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(ans[j]>ans[i])//ans[i]与ans[j]值进行交换
            {
                ans[j]=ans[j]+ans[i];
                ans[i]=ans[j]-ans[i];
                ans[j]=ans[j]-ans[i];
            }
        }
    }
    for(i=0;i<n-2;i++)
    {
        if(ans[i]<ans[i+1]+ans[i+2])
        {
            sum=ans[i]+ans[i+1]+ans[i+2];
            break;
        }
    }
    printf("%d\n",sum);
    return 0;
}

三角形问题的解决复杂度O(n^3)和O(nlogn)的比较的更多相关文章

  1. 统计无向图中三角形的个数,复杂度m*sqrt(m).

    统计无向图中三角形的个数,复杂度m*sqrt(m). #include<stdio.h> #include<vector> #include<set> #inclu ...

  2. 数据可视化之DAX篇(十一)Power BI度量值不能作为坐标轴?这个解决思路送给你

    https://zhuanlan.zhihu.com/p/79522456 对于PowerBI使用者而言,经常碰到的一个问题是,想把度量值放到坐标轴上,却发现无法实现.尤其是初学者,更是习惯性的想这么 ...

  3. 从0开发3D引擎(九):实现最小的3D程序-“绘制三角形”

    目录 上一篇博文 运行测试截图 需求分析 目标 特性 头脑风暴 确定需求 总体设计 具体实现 新建Engine3D项目 实现上下文 实现_init 实现"获得WebGL上下文" 实 ...

  4. CSS和字符串实现三角形

    听说是百度校招的题目,就写了一下 <!doctype html> <html> <head> <meta charset="utf-8"& ...

  5. 普林斯顿大学算法课 Algorithm Part I Week 3 排序算法复杂度 Sorting Complexity

    计算复杂度(Computational complexity):用于研究解决特定问题X的算法效率的框架 计算模型(Model of computation):可允许的操作(Allowable oper ...

  6. BZOJ2458 Beijing2011最小三角形(分治)

    类似于平面最近点对,考虑分治,即分别计算分割线两侧的最小三角形再考虑跨过线的三角形. 复杂度证明也是类似的,对于某一个点,在另一侧可能与其构成最小三角形的点在一个d*d/2的矩形内(两边之和大于第三边 ...

  7. VS2010安装顽疾解决方法:error 25541 failed to open xml file

    一.问题描述 因为之前(2012)对HDFS客户端Thrift接口的库文件封装使用的是VS2010,最近考虑做一个完整的网盘系统的客户端,就把该库文件使用起来,比较悲剧的是之前做过操作系统的还原.我的 ...

  8. 沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)

    沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)是由俄国数学家格奥尔吉·沃罗诺伊建立的空间分割算法.灵感来源于笛卡尔用凸域分割空间的思想. ...

  9. 【概率DP入门】

    http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html 有关概率和期望问题的研究 摘要 在各类信息学竞赛中(尤其是ACM竞赛中) ...

随机推荐

  1. fstab 中 通过UUID挂载 参数解释

    UUID=cf474122-1d51-4953-846d-9ce1c8d23ae6 / ext4 defaults 1 1UUID=ef21d494-0dc7-41ec-95b2-a691bfd4e5 ...

  2. 无线AP和无线路由器区别

    无线AP,即Access Point,也就是无线接入点.简单来说就是wifi共享上网中的无线交换机,它是移动终端用户进入有线网络的接入点. AD:51CTO技术沙龙 | 赋予APP不同凡响的交互和体验 ...

  3. SVN 修改log信息报错的解决方案

    要实现允许修改log这个功能,只需要在hooks目录下增加一个名为:pre-revprop-change.bat的文件,重启svn即可.该文件内容为:------------------------- ...

  4. class文件概述

    将java代码编译后会产生class文件,并且一个clas文件会对应唯一一个java类或者接口.下面对一个通过一个简单的例子来简述一下class文件的结构. java代码 public class J ...

  5. ContentProvider详解

    作用:把一个App中的数据库通过Url的形式共享出来,供其他App使用. 首先在App1中创建一个数据库,用SQLiteOpenHelper public class MyOpenHelper ext ...

  6. POJ2155 Matrix二维线段树经典题

    题目链接 二维树状数组 #include<iostream> #include<math.h> #include<algorithm> #include<st ...

  7. vs2012 发布网站,

    如图这样选择就没有可以得到一个不包括 *.aspx.cs 的网站了.

  8. python基础-range用法_python2.x和3.x的区别

    #range帮助创建连续的数字,通过设置步长来指定不连续 python2.7 #直接就在内存中创建出来(0-99) >>> range(100)[0, 1, 2, 3, 4, 5, ...

  9. 十天冲刺---Day4

    站立式会议 站立式会议内容总结: git上Issues新增内容: 燃尽图 照片 队伍度过了一次难关,刚开始学习的难关. 但还是存在进度较慢的问题. 队伍内相互理解是关键. 要时刻了解队友的情况.

  10. 使用SFTP工具下载文件

    1. 打开SFTP会话 File->Connect SFTP Session  2. cd 到文件目录下 3. get 文件名称 sftp> get catalina.out 4. lpw ...