zoukankan      html  css  js  c++  java
  • 挑战程序设计竞赛(水题打卡)

    一、题目

    有n根棍子,棍子i的长度为ai。想要从中选出三根棍子,使其构成的三角形的周长最大。请输出最大的周长,如果无法构成三角形,则输出0。

    二、解法

    1)思路:首先根据长度排序(假设从小到大),贪心的选取(从大到小的遍历)如果与前两根构成三角形,则跳出循环。

    正确性:如果一根棍子与前两个都不能构成三角形,与更前面的更不能构成三角形

    2)代码:

     1 #include<stdio.h>
     2 #include<algorithm>
     3 using namespace std;
     4 const int maxn = 100 + 10;
     5 int len[maxn];
     6 
     7 int main()
     8 {
     9     int n,res = 0;
    10     scanf("%d", &n);
    11     for (int i = 0; i < n; i++)
    12         scanf("%d", &len[i]);
    13     sort(len, len + n);
    14     for (int i = n - 1; i >= 2; i--)
    15     {
    16         if (len[i - 1] + len[i - 2] > len[i])
    17         {
    18             res = len[i - 1] + len[i - 2] + len[i];
    19             break;
    20         }
    21     }
    22     printf("%d", res);
    23     return 0;
    24 }
  • 相关阅读:
    开涛spring3(6.5)
    开涛spring3(6.4)
    开涛spring3(6.3)
    开涛spring3(6.2)
    开涛spring3(6.1)
    开涛spring3(5.4)
    开涛spring3(5.3)
    开涛spring3(5.1&5.2)
    开涛spring3(4.4)
    开涛spring3(4.3)
  • 原文地址:https://www.cnblogs.com/lfri/p/9321827.html
Copyright © 2011-2022 走看看