学习目标:算法学习-Day8
题库: 洛谷题库
每天保持发布一篇Java或C算法题解!
题目:
给定 4 根木棍的长度,如果它们中存在 3 根木棍可以组成三角形,输出 TRIANGLE ;如果它们无法组成三角形,但是它们中存在 3 根木棍可以组成退化的三角形(任意两边之和大于等于第三边,但是不是三角形),输出 SEGMENT ;否则,输出 IMPOSSIBLE 。
注意: 木棍不能折断,也不能只用一部分长度。
输入格式:
一行 4 个整数,44 根木棍的长度。
输出格式:
如果它们中存在 3 根木棍可以组成三角形,输出 TRIANGLE ;如果它们无法组成三角形,但是它们中存在3根木棍可以组成退化的三角形,输出 SEGMENT ;否则,输出 IMPOSSIBLE。
样例 1 :
输入:
4 2 1 3
输出:
TRIANGLE
样例 2 :
输入:
7 2 2 4
输出:
SEGMENT
样例 3 :
输入:
3 5 9 1
输出:
IMPOSSIBLE
思路:
题目有两种三角形,一种输出TRIANGLE,另一种输出SEGMENT。
给了4根木棍,其中任意3根组成三角形。
如果第一根木棍和第二根木棍的总长大于第四根,那么就一定大于第三根,
所以只要判断第一根木棍和第二根木棍的总长与第三根的关系。
同理,如果第一根木棍和第三根木棍的总长大于第四根,那么第二根木棍和第三根木棍的总长也一定大于第四根
所以只要判断第二根木棍和第三根木棍的总长与第四根的关系。
也就是说退化的三角形也一样判断。
习题总结及反思:
Arrays类的sort()方法,用于排序。
代码如下:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int [] n = new int [4];
//循环输入4个整数
for(int i = 0; i < n.length; i ++)
{
n[i] = input.nextInt();
}
//从小到大排序
Arrays.sort(n);
//输出排序后的数组
/*for(int i = 0; i < n.length; i++)
{
System.out.printf(n[i]+" ");
}*/
/*思路:
*如果第一根木棍和第二根木棍的总长大于第四根,那么就一定大于第三根,
*所以只要判断第一根木棍和第二根木棍的总长与第三根的关系。
*同理,如果第一根木棍和第三根木棍的总长大于第四根,那么第二根木棍和第三根木棍的总长也一定大于第四根
*所以只要判断第二根木棍和第三根木棍的总长与第四根的关系。
*也就是说退化的三角形也一样判断。
*/
//下面是判断规则,也就是上面的思路
if(n[0]+n[1]>n[2] || n[1]+n[2]>n[3])
{
System.out.println("\nTRIANGLE");
}
else if(n[0]+n[1]==n[2] || n[1]+n[2]==n[3])
{
System.out.println("\nSEGMENT");
}
else
{
System.out.println("\nIMPOSSIBLE");
}
}
}
317

被折叠的 条评论
为什么被折叠?



