• 挑战程序设计竞赛-1.6节-三角形


    问题主题:三角形

    问题描述:

        有n根棍子,棍子i的长度为ai,想要从中选出三根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0。

    样例:

    输入

    n=5

    a={2,3,4,5,10}

    输出

    12(选择3,4,5时)

     

    输入

    n=4

    a={4,5,10,20}

    输出

        0(无法构成三角形)

    代码:

      

     1 #include <iostream>
     2 #include <cstdlib>
     3 #include <cstdio>
     4 #include <algorithm>
     5 
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     int n,a[101];
    11     scanf("%d",&n);
    12 
    13     for(int i = 0;i < n;i++){
    14         scanf("%d", &a[i]);
    15     }
    16 
    17     //sort比qsort快一些
    18     sort(a, a+n);
    19 
    20     for(int i = n - 1; i > 1;i--){
    21         for(int j = i - 1; j > 0;j--){
    22             for(int k = j - 1; k >=0; k--){
    23                 if(a[i] < a[j] + a[k]){
    24                    printf("%d
    ",a[i]+a[j]+a[k]);
    25 
    26                    goto last;          //跳出三重循环,此处使用goto非常方便,但是不能滥用
    27                 }
    28         }
    29      }
    30    }
    31 
    32     printf("%d---不能组成三角形",0);
    33 
    34     last:
    35         return 0;
    36 
    37 
    38 }

    思路是,先对数组从小到大排序,然后第一根棍子最长,第二根棍子次长,第三根最短,三根棍子分别从大到小遍历,当遇到满足条件的三根棍子,那么不用继续遍历了,此刻已经是最长的棍子了。

  • 相关阅读:
    确定机器上装有哪些.net framework版本
    C#中的私有构造函数
    突破vs2008 RTM90天使用限制(转)
    圣诞晚会串词(转)
    C#中ref和out
    登缙云山随笔
    质量百分百
    自然界五种长有人脸像的怪异生物
    C# 静态构造函数
    NET环境下基于Ajax的MVC方案
  • 原文地址:https://www.cnblogs.com/--CYH--/p/6497983.html
Copyright © 2020-2023  润新知