题目描述
题目链接: 三角形__牛客网 (nowcoder.com)
给定三条边,请你判断一下能不能组成一个三角形。
输入描述:
输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。
输出描述:
对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。
示例1
输入
1 2 3 2 2 2输出
No Yes
题意解读:
这道题,没什么难的,就是判断三角形,条件,很简单,任意两边之和大于第三边,任意两边之差小于第三边。但这道题却是一道四星难度的题,那它的难度还是不能轻视的。难度在哪呢,在给出的数据太大,导致通不过。
解题思想:
解题思想很简单,就是两边之和大于第三边,两边之差小于第三边,但是这里有个取巧思想,那就是,对三边排序,只要最小和次小之和大于最大值,最大和次大之差小于最小值,就可以了。 但要注意,数据的接收,如下,
我上面代码,通过率为 0% ,但是代码逻辑毫无问题,问题出在哪呢,问题出在用例中给的数据太大,Int接收不了,当我把第 八行改为 scan.nextDouble()接收后,就百分百通过了。
代码注释:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNextDouble()) {
double[] triangle = new double[3];
for(int i=0;i< triangle.length;i++){
triangle[i] = scan.nextDouble();
}
Arrays.sort(triangle);
if(triangle[0]+triangle[1] > triangle[2] &&(triangle[2]-triangle[1]< triangle[0]))
System.out.println("Yes");
else
System.out.println("No");
}
}
}