我们有一些小木棒,可以选取其中的三根,组成一个三角形,我们的问题:在我们能够得到最大面积的三角形时,周长最小是多少。
输入
输入数据包含多个测试实例,每个实例占两行,第一行有一个数据N(3 <= N <= 100).接下来一行输入N个正整数,其中每个数都是1到100之间。如果N = 0则表示输入数据的结束,不做处理。
输出
对于每个测试实例,请输出在我们能够得到最大面积的三角形时,周长最小是多少。如果组不成三角形,输出0.每个输出占一行。
样例输入
5
1 2 3 4 5
7
1 2 3 4 6 6 6
0
样例输出
12
18
c语言编程题!
答案:1 悬赏:10 手机版
解决时间 2021-02-12 17:40
- 提问者网友:喧嚣尘世
- 2021-02-11 20:48
最佳答案
- 五星知识达人网友:零点过十分
- 2021-02-11 21:07
#include
void swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
void sort(int *a, int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (a[j] < a[j + 1])
swap(&a[j], &a[j + 1]);
}
int main(void)
{
int n, a[100];
while (scanf("%d", &n) != EOF && n != 0) {
int i;
for (i = 0; i < n; i++)
scanf("%d", a + i);
sort(a, n);
for (i = 0; i < n - 3; i++)
if (a[i] < a[i + 1] + a[i + 2])
break;
if (i < n - 3)
printf("%d\n", a[i] + a[i + 1] + a[i + 2]);
else
printf("0\n");
}
return 0;
}
void swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
void sort(int *a, int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (a[j] < a[j + 1])
swap(&a[j], &a[j + 1]);
}
int main(void)
{
int n, a[100];
while (scanf("%d", &n) != EOF && n != 0) {
int i;
for (i = 0; i < n; i++)
scanf("%d", a + i);
sort(a, n);
for (i = 0; i < n - 3; i++)
if (a[i] < a[i + 1] + a[i + 2])
break;
if (i < n - 3)
printf("%d\n", a[i] + a[i + 1] + a[i + 2]);
else
printf("0\n");
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯