最大三角形

简介: 最大三角形

有一个游戏,玩法是在一堆长度不一的小棍中找出三根棍子,拼出一个周长最大的三角形。有什么策略能快速的找到三根小棍么?

输入格式:

在一行中给出小棍的个数 N,另一行中分别给出 N 个小棍的长度,之间用空格隔开。

输出格式:

如果小棍的数量小于 3,则输出小棍的个数不能组成三角形;如果找到最大的三角形,则输出最大三角形的周长是?,并在下一行中输出组成最大三角形的三条边是?,?,?,三条边之间用英文逗号隔开并从小到大输出;如果没有找到,则输出没有找到能组成三角形的小棍。

#include <stdio.h>
#include <malloc.h>
void main()
{
    int len;
    int *mLength;
    scanf("%d", &len);
    if(len<3)
    {
        printf("小棍的个数不能组成三角形");
        return;
    }
    mLength = (int *)malloc(len * sizeof(int));
    for (int i = 0; i < len; i++)
    {
        scanf("%d", &mLength[i]);
    }
    Sort(mLength,len);
    Select(mLength,len);
}
void Select(int *mLength,int len)
{
    int j,k;
    int sum =0;
    for(int i = 0;i <len ;i++)
    {
        for(j = i +1;j < len;j++)
        {
            for(k=j+1;k <len; k++)
            {
                 if(mLength[i] + mLength[j] > mLength[k] && mLength[i] - mLength[j] < mLength[k])
                 {
                    sum = mLength[i] + mLength[j]+mLength[k];
                    printf("最大三角形的周长是%d\n",sum);
                    printf("组成最大三角形的三条边是%d,%d,%d",mLength[k],mLength[j],mLength[i]);
                    return;
                    }
            }   
        }
    }
    if(sum == 0 )
    {
        printf("没有找到能组成三角形的小棍");
    }
}
void Sort(int *mLength, int len)
{
    int j,temp;
    int max = 0;
    for (int i = 0; i < len; i++)
    {
        max = i;
        for (j = i + 1; j < len; j++)
        {
            if (mLength[j] > mLength[max])
            {
                max = j;
            }
        }
        if(i != max)
        {
            temp = mLength[i];
            mLength[i] = mLength[max];
            mLength[max] = temp;
        }
    }
} 


相关文章
|
18天前
创建三角形图案
【10月更文挑战第24天】创建三角形图案。
14 3
圆角三角形,二次方贝塞尔曲线
圆角三角形,二次方贝塞尔曲线
|
4月前
|
前端开发 JavaScript
canvas系列教程01——直线、三角形、多边形、矩形、调色板
canvas系列教程01——直线、三角形、多边形、矩形、调色板
97 0
wustojc4008能否构成三角形
wustojc4008能否构成三角形
34 0
三角形的面积-叉积
三角形的面积-叉积
69 0
【C++之纯虚函数与抽象类2】计算圆形、正方形、矩形、梯形和三角形的图形面积,并求和
【C++之纯虚函数与抽象类2】计算圆形、正方形、矩形、梯形和三角形的图形面积,并求和
|
前端开发 JavaScript 数据可视化
用Canvas实现简单画图(线、三角形、矩形、圆)
👋因为在B站看到一个小demo是基于canvas写的,非常喜欢,然后上掘金大数据又给我推了 《Canvas 从入门到劝朋友放弃(图解版)》,就像上手一下canvas,本来不想写笔记的,因为《Canvas 从入门到劝朋友放弃(图解版)》自己看了一下挺全的,但本着输入要有输出,所以就有了这篇文章
245 0
140.递归法绘制三角形图案
140.递归法绘制三角形图案
82 0
20天刷题计划-120. 三角形最小路径和
给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。