0
点赞
收藏
分享

微信扫一扫

最大三角形


最大三角形

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

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

输出格式:

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

最大三角形_#include


最大三角形_算法_02

#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;
}
}
}


举报

相关推荐

0 条评论