第几天?
题目 [HDU - 2005]
给定三条边,请你判断一下能不能组成一个三角形。
Time limit | Memory limit | OS | Source |
---|---|---|---|
1000 ms | 32768 kB | Windows | 2005实验班短学期考试 |
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000;
Output
对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。
Example
Input | Output |
---|---|
2 | - |
1 2 3 | NO |
2 2 2 | YES |
问题链接: [HDU - 2039]
问题描述
判断给定的三个边能不能组成一个三角形,判断次数,是第一次输入的数字M
问题分析
判断只进行M次,所以要用代码实现循环次数
同时要对是否是三角形进行判断
三角形的三边关系: 任意两边之和大于第三边
代码
先把AC代码贴上来
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
while (n--)
{
double a, b, c;
cin >> a>>b>> c;
if (a < b) swap(a, b);
if (a < c) swap(a, c);
if (a < b + c) cout << "YES" << endl;
else cout << "NO"<<endl;
}
}
代码分析
int n;
cin >> n;
while (n--)//超大声bb:while(n--)真好用
这一段为了实现题目中
输入数据第一行包含一个数M,接下有M行
这一要求
接下来这一段就是判断能不能成为一个三角形了
double a, b, c;
cin >> a>>b>> c;
if (a < b) swap(a, b);
if (a < c) swap(a, c);
if (a < b + c) cout << "YES" << endl;
else cout << "NO"<<endl;
下面这一段是为了把a,swap成最大的数,要实现只需要和另外两个数(b,c)比较就阔以了
if (a < b) swap(a, b);
if (a < c) swap(a, c);
然后就是进行判断并Output了
if (a < b + c) cout << "YES" << endl;
else cout << "NO"<<endl;
一个最大的边小于两个较小的边的和,一定能组成三角形