HDU-三角形
三角形
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 124601 Accepted Submission(s): 40048
Problem Description
给定三条边,请你判断一下能不能组成一个三角形。
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000;
Output
对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。
Sample Input
<pre style="font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; white-space: pre-wrap; word-wrap: break-word;">
2
1 2 3
2 2 2
</pre>
Sample Output
<pre style="font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; white-space: pre-wrap; word-wrap: break-word;">
NO
YES
</pre>
Author
linle
Source
Recommend
lcy
问题链接(http://acm.hdu.edu.cn/showproblem.php?pid=2039)
问题简述:输入一个M值,则需要判断M个三条边得数据能否构成三角形,如果能,则输出“YES”,反之则输出“NO”;
问题分析:通过判断任意两边之和大于第三边且这两边的之差的绝对值小于第三边来判断给出的三条边的数据能否构成三角形。
程序分析:用if和&&及||符号对条件进行限制,从而到达目的
AC程序C++如下:
#include<iostream>
using namespace std;
int panduan(double &A, double& B, double& C)
{
if ((A + B > C&&(A - B<C ||B-A<C))&&( A + C>B&&(A - C<B||C-A<B)) &&(B + C>A&&(B - C < A||C-B<A)))
{
return 1;
}
else return 0;
}
int main()
{
double A, B, C;
int M;
cin >> M;
for (int i = 0; i < M; i++)
{
cin >> A >> B >> C;
if (panduan(A, B, C)) cout << "YES" << endl;
else cout << "NO" << endl;
}
}