1 条题解

  • 0
    @ 2026-8-18 12:00:58

    思路

    三条边能拼成三角形的条件是:任意两边之和大于第三边,三个条件缺一不可:

    • a + b > c
    • a + c > b
    • b + c > a

    为什么要检查三个而不是只检查一个?因为输入并不保证 a 是最长边。比如 1 2 3 恰好是 a + b = c(不成立),但如果输入顺序是 3 1 2,只检查 a + b > c 就会误判。

    小提示:如果先把三边排序,让 c 成为最大边,就只需要检查 a + b > c 一个条件。但直接写三个条件最省事,也不容易错。

    代码

    #include <stdio.h>
    
    int main() {
        int a, b, c;
        scanf("%d %d %d", &a, &b, &c);
    
        if (a + b > c && a + c > b && b + c > a)
            printf("yes\n");
        else
            printf("no\n");
        return 0;
    }
    

    易错点

    • "大于"不是"大于等于":两边之和恰好等于第三边(如 1、2、3)时三边会"压扁"成一条线段,不能构成三角形,要输出 no。
    • 三个条件要用 &&(并且)连接,写成 ||(或者)就全错了。
    • 边长为 0 或负数时(如 0 1 1),同样不满足条件,自然输出 no,无需特判。
    • 1

    信息

    ID
    8
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者