三角形分类(洛谷P5717题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
三角形分类(洛谷P5717题题解,Java语言描述)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目要求
P5717題目鏈接
分析
要明確各個條件之間的關系!
首先是要看是不是三角形,如果不是就不用也不能進行下面的判斷,這是必須注意的。
判據(jù)是:三角形兩邊之和大于第三邊。
接下來要通過三角形的三個角度判類型,包含銳角三角形、直角三角形、鈍角三角形三種。
判據(jù)是:余弦定理。
三角形的角度在(0, π)之間,
所以角是鈍角的時候余弦值小于0,-2bccosA則大于0,所以:
直角的情況就是勾股定理啦~~
銳角的情況是:
我們接著想啊,只要有了鈍角或者直角,這個三角形的形狀就可以判了,這種子判斷條件之間關系是“或”。
用短路的或會更合適一些。
但是銳角△則是必須三個角全是銳角才能判定。
當然,我想的是,我們既然排除了鈍角△(if)、直角△(else if),就肯定是銳角△啦,這樣也可以判。
其實等腰△不一定是銳角△、直角△、或者鈍角△,但等邊既是等腰△也是銳角△,但為了判斷方便,建議在判完鈍角△/直角△/銳角△之后,獨立地判等腰△,等腰△確認后判一下等邊△,這樣會好一些。
這個題看似很簡單,但要保證邏輯的嚴密,還是值得想想的~~
AC代碼(Java語言描述)
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int a = scanner.nextInt(), b = scanner.nextInt(), c = scanner.nextInt();scanner.close();boolean isTriangle = a < b + c && b < a + c && c < a + b;boolean isObtuse = a*a > b*b + c*c || b*b > a*a + c*c || c*c > a*a + b*b;boolean isRight = a*a == b*b + c*c || b*b == a*a + c*c || c*c == a*a + b*b;if (!isTriangle) {System.out.println("Not triangle");return;} else if (isObtuse) {System.out.println("Obtuse triangle");} else if (isRight) {System.out.println("Right triangle");} else {System.out.println("Acute triangle");}boolean isIsosceles = a == b || a == c || b == c;boolean isEquilateral = a == b && a == c && b == c;if (isIsosceles) {System.out.println("Isosceles triangle");if (isEquilateral) {System.out.println("Equilateral triangle");}}} }總結
以上是生活随笔為你收集整理的三角形分类(洛谷P5717题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】Python中的类型转换
- 下一篇: 【Java】文件锁定与系列NIO操作