1.题目描述:
2.题意概述:
给你一堆火柴棍长度,要你判断是否存在从中拿三个能构成三角形的情况
3.解题思路:
直接排序以后贪心地选取相邻三边判断即可
4.AC代码:
#include <stdio.h>
#include <algorithm>
#define maxn 101000
using namespace std;
int a[maxn];
int judge(int a, int b, int c)
{
if (a + b > c && c - a < b)
return 1;
else
return 0;
}
int main()
{
int n;
while (scanf("%d", &n) != EOF)
{
int flag = 0;
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a + n);
for (int i = 1; i < n - 1; i++)
if (judge(a[i - 1], a[i], a[i + 1]))
{
flag = 1;
break;
}
if (flag)
puts("YES");
else
puts("NO");
}
return 0;
}