XTU 1180 triangle

来源:互联网 发布:淘宝入门 编辑:程序博客网 时间:2024/05/22 13:49

题目描述

给N条边,请找三条边,使其组成一个三角形,并使得这个三角形的周长最大。 

输入
存在多个样例。第一行是一个整数N(3≤N;≤10,000),如果N=0,则表示输入结束。第二行是N个整数,整数处于[1,100000000]之间,为N条边的长度。 
输出
输出最大周长三角形的周长,如果不能组成三角形,输出0。 
样例输入
5
5 3 4 10 2
0
样例输出

12

解题思路

首先对这些数排序,然后从最大的数开始,判断相邻的3个数能否组成三角形即可。

AC代码:

#include <bits/stdc++.h>using namespace std;#define maxn 10002int N[maxn];int main(){int n;int s;while(scanf("%d",&n)&&n){s=0;for(int i=0;i<n;i++) scanf("%d",N+i);sort(N,N+n);    for(int i=n-1;i>=2;i--){    if(N[i]<N[i-1]+N[i-2]){    s=N[i]+N[i-1]+N[i-2];    break;    }    }    printf("%d\n",s);}return 0;}