训练赛1 D

给定三条边,请你判断一下能不能组成一个三角形。
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000;
Output
对于每个测试实例,如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。
Sample Input
2
1 2 3
2 2 2
Sample Output
NO
YES
问题链接:https://vjudge.net/problem/HDU-2039
问题分析:先用一个二维数组存储N组数据,每组数据有三个数据。再把每一组数据分别判断是否能构成三角形即可(特别注意需要用double,没用double型我WA了好多次快要疯了)
AC通过的C++语言程序如下:

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	int m = 3;
	double**p = new double*[n];//分配一个指针数组,将首地址存在p
	for (int i = 0; i < n; i++)
	{
		p[i] = new double[m];
	}//相当于声明了一个p[n][3]的二维数组
	double shuzhi;
	int a = 0, b = 0;
	while (a < n)
	{
		cin >> shuzhi;
		p[a][b] = shuzhi;
		b++;
		if (b == 3)
		{
			b = 0;
			a++;
		}
	}
	for (int j = 0; j < n; j++)
	{
		if (p[j][0] + p[j][1] > p[j][2] && p[j][1] + p[j][2] > p[j][0] && p[j][0] + p[j][2] > p[j][1])
		{
			cout << "YES" << endl;
		}
		else { cout << "NO" << endl; }
	}
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44012745/article/details/84925464