三角形
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;
}
}