有n根棍子,棍子i的长度为a[i],要从中选出三根棍子组成周长尽可能大的三角形。请输出最大周长,若无法组成三角形则输出0。3<=n<=100, 1<= a[i] <=10^6.
#include <iostream>
#include <cstdio>
using namespace std;
#define MAX_N 100
int maxm(int a, int b)
{
return(a > b ? a: b);
}
int main()
{
int n, a[MAX_N], t;
printf("n = ");
scanf("%d", &n);
for(t = 0; t < n; t++)
scanf("%d", &a[t]);
int ans = 0;
for(int i = 0; i < n; i++)
for(int j = i + 1; j < n; j++)
for(int k = j + 1; k < n; k++)
{
int len = a[i] + a[j] + a[k];
int maxx = maxm(a[i], maxm(a[j], a[k]));
int rest = len - maxx;
if(rest > maxx)
ans = maxm(ans, len);
}
printf("%d\n", ans);
return 0;
}
感悟以及注意点:1.要调用函数放在前面,否则要在主函数中进行声明。
2.j = i+1; k = j+1;巧妙避免了选择同一个木棍
3.开始设置ans = 0,保证了如果无法组成三角形则输出0;