zoukankan      html  css  js  c++  java
  • 挑战程序设计竞赛-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 }

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

  • 相关阅读:
    Java RandomAccessFile用法(转)
    CSS样式设计小技巧(水平居中,垂直居中)
    CSS总结(下篇)
    CSS总结(中篇)
    CSS总结(上篇)
    Html常用到的标签
    java 重定向和转发的区别(转)
    eclipse启动tomcat无法访问的解决方法(转)
    Busybox下mdev配置说明
    Linux 下网卡参数配置
  • 原文地址:https://www.cnblogs.com/--CYH--/p/6497983.html
Copyright © 2011-2022 走看看