这是一道非常水的题目,但是,我想说的是,double类型跟0的比较。
因为double类型或float类型都是有精度的,其实都是取的近似值,所以有个误差。和一个很小的数比如0.00000001(1e-8)比较就是为了在这个误差范围内进行比较。
所以,我这里不是直接用(edge[0]+edge[1])>edge[2];而是用if((edge[0]+edge[1]-edge[2])>0.0000001);
多注意点细节,这是我的追求。
ps:接下来我会把我做的题目逐渐贴出来的。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int test;
double edge[3];
cin>>test;
while(test--)
{
for(int i=0;i<3;i++)
cin>>edge[i];
sort(edge,edge+3);
if((edge[0]+edge[1]-edge[2])>0.0000001)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}