题解
判断三角形
1 条题解
-
0
解题思路
要判断三根小棒能不能围成一个三角形,有一个重要的规则叫“三角形不等式”:任意两边之和必须大于第三边。
为什么要有这个规则?你可以想象:如果两根短棒加起来还没有第三根长,那么把它们首尾相接,也够不到第三根的两头,中间就会断开,自然围不成三角形。只有两短边之和“撑得住”,三根棒才能首尾相连。
所以我们需要同时检查三个不等式:
- a + b > c
- b + c > a
- c + a > b
只有当这三个不等式都成立时,三根棒才能构成三角形。在程序里,“三个条件同时成立”用逻辑与运算符 && 连接,它表示“并且”。
有两个边界要注意:
- 题目里边长可以等于 0。如果有一条边是 0,比如 a = 0,那么 b + 0 > c 和 0 + c > b 不可能同时成立,所以输出 NO,这正好说明长度为零的“边”不可能构成三角形;
- 当两边之和等于第三边时,比如 a + b == c,三点会排在一条直线上,也围不成三角形。所以必须用大于号 >,不能写成 >=。
参考代码
#include using namespace std;
int main() { int a, b, c; // a、b、c 分别表示三条边的长度 cin >> a >> b >> c; // 读入三条边
// 三个条件同时成立:任意两边之和大于第三边 if (a + b > c && b + c > a && c + a > b) { cout << "YES" << endl; // 能构成三角形 } else { cout << "NO" << endl; // 不能构成三角形 } return 0;}
复杂度分析
程序只读入三个整数,做三次加法和一次组合判断,运算次数固定,与边长的大小无关,时间复杂度是 O(1)。只用了三个 int 变量,空间复杂度也是 O(1)。
- 1