版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugarbliss/article/details/89438316
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6512
题意:给你n个数判断能否组成三角形。
思路:如果不能组成三角形,那么数列是斐波拉契数列级别增长,所以个数 < 50。
#include<bits/stdc++.h>
using namespace std;
const int N = 5e6 + 7;
int a[N];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
int flag = 0;
if(n < 50)
{
sort(a + 1, a + n + 1);
for(int i = 1; i <= n - 2; i++)
if(a[i]+a[i+1]>a[i+2]){ flag = 1; break; }
}
else flag = 1;
puts(flag ? "YES":"NO");
}
return 0;
}