题意翻译
要求
给定4根木棍的长度,如果它们中存在3根木棍可以组成三角形,输出"TRIANGLE";如果它们无法组成三角形,但是它们中存在3根木棍可以组成退化的三角形(任意两边之和大于等于第三边,但是不是三角形),输出"SEGMENT";否则,输出"IMPOSSIBLE"。
注意: 木棍不能折断,也不能只用一部分长度。
输入
一行4个整数,4根木棍的长度。
输出
如果它们中存在3根木棍可以组成三角形,输出"TRIANGLE";如果它们无法组成三角形,但是它们中存在3根木棍可以组成退化的三角形,输出"SEGMENT";否则,输出"IMPOSSIBLE"。
输入输出样例
输入样例#1: 复制
4 2 1 3
输出样例#1: 复制
TRIANGLE
输入样例#2: 复制
7 2 2 4
输出样例#2: 复制
SEGMENT
输入样例#3: 复制
3 5 9 1
输出样例#3: 复制
IMPOSSIBLE
思路
排序思想!
1.先把4条木头从大往小排;
2.根据三角形判定公式的推导公式:最长边<其余两边,进行判定和输出(TRIANGLE);
3.如果是SEGMENT,则最长边==其余两边;
4.否则为IMPOSSIBLE。
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int compare(int a,int b)//从大往小排
{
return a>b;
}
int main()
{
ios::sync_with_stdio(false);
int a[5]={},i;
scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4]);
sort(a+1,a+4+1);
if(a[3]<a[1]+a[2] || a[4]<a[1]+a[2] || a[4]<a[1]+a[3] || a[4]<a[2]+a[3])//纯模拟
{
cout<<"TRIANGLE"<<endl;
}
else if(a[3]==a[1]+a[2] || a[4]==a[1]+a[2] || a[4]==a[1]+a[3] || a[4]==a[2]+a[3])
{
cout<<"SEGMENT"<<endl;
}
else
{
cout<<"IMPOSSIBLE"<<endl;
}
return 0;
}