Ewan-Ahiouy 发表于 2023-7-28 19:07:02

提问:最小两条边大于第三边就一定能构成三角形吗?

本帖最后由 Ewan-Ahiouy 于 2023-7-28 19:14 编辑

rt,困扰我好久{:10_250:}

如果提问不正确,请提供一个推翻提问的反例,不然不给最佳

陶远航 发表于 2023-7-28 19:07:11

不是的。要构成一个三角形,任意两边之和必须大于第三边。如果最小的两条边之和小于或等于第三边,就不能构成三角形。这个条件被称为三角不等式定理。所以,最小两条边大于第三边并不一定能构成三角形。
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-7-28 19:07:12

是的,只要三条边的长度满足最小两条边之和大于第三条边的长度,就可以构成一个三角形。这是三角形的一个重要性质,也被称为三角形的三边关系或三角不等式。

假设有一三角形的三边分别为a、b、c,那么构成三角形的条件是:
1. a + b > c
2. a + c > b
3. b + c > a

如果以上三个条件都满足,那么三边a、b、c所构成的就是一个三角形。如果不满足任何一个条件,那么无法构成三角形。

这个性质可以通过几何推导进行证明,也可以直观地理解为:任意两边之和要大于第三边,否则三条边无法将一个封闭的图形构成。

希望这个解答能够解除你的困扰!如果还有其他问题,请随时提问。

Mike_python小 发表于 2023-7-28 19:07:25

最小两条边大于第三边这个条件是构成一个三角形的必要但不充分条件。也就是说,如果有一组边长满足这个条件,它们可以构成一个三角形,但并不是所有满足这个条件的边长组合都能构成三角形。

在C/C++中,我们可以使用以下代码来判断给定的三个边长是否能够构成一个三角形:


#include <stdio.h>

int isTriangle(int a, int b, int c) {
    if (a <= 0 || b <= 0 || c <= 0) {
      return 0; // 任意边长小于等于0,则不能构成三角形
    }

    if (a + b > c && b + c > a && c + a > b) {
      return 1; // 构成三角形
    } else {
      return 0; // 不能构成三角形
    }
}

int main() {
    int a, b, c;
    printf("请输入三个整数作为边长:");
    scanf("%d %d %d", &a, &b, &c);

    if (isTriangle(a, b, c)) {
      printf("可以构成三角形\n");
    } else {
      printf("不能构成三角形\n");
    }

    return 0;
}


以上代码通过 isTriangle() 函数判断给定的三个整数 a、b、c 是否能够构成一个三角形。如果满足条件则返回1,否则返回0。在 main() 函数中,我们通过用户输入的方式获取三个边长,并调用 isTriangle() 函数进行判断。

希望对你有所帮助!

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

Ewan-Ahiouy 发表于 2023-7-28 19:09:26

陶远航 发表于 2023-7-28 19:07
不是的。要构成一个三角形,任意两边之和必须大于第三边。如果最小的两条边之和小于或等于第三边,就不能构 ...

请认真看题哦

Ewan-Ahiouy 发表于 2023-7-28 19:09:57

isdkz 发表于 2023-7-28 19:07
是的,只要三条边的长度满足最小两条边之和大于第三条边的长度,就可以构成一个三角形。这是三角形的一个重 ...

请认真看题哦

Ewan-Ahiouy 发表于 2023-7-28 19:10:55

@学习编程中的Ben @zhangjinxuan @sfqxx @歌者文明清理员 想要最佳吗

sfqxx 发表于 2023-7-28 19:12:34

我觉得这个证明成立。

如果两个较小的数和大于最大的数,那么最大的数加其中一个较小的数和也肯定大于另外一个较小的数

Ewan-Ahiouy 发表于 2023-7-28 19:13:43

sfqxx 发表于 2023-7-28 19:12
我觉得这个证明成立。

如果两个较小的数和大于最大的数,那么最大的数加其中一个较小的数和也肯定大于另 ...

我也是这样觉得的{:10_250:}但是luogu不认为这样

sfqxx 发表于 2023-7-28 19:14:02

Ewan-Ahiouy 发表于 2023-7-28 19:13
我也是这样觉得的但是luogu不认为这样

?哪里?{:10_257:}神奇

Ewan-Ahiouy 发表于 2023-7-28 19:14:55

sfqxx 发表于 2023-7-28 19:14
?哪里?神奇

https://www.luogu.com.cn/record/117876157

my code

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a;
    cin >> a >> a >> a;
    sort(a, a + 3);
    bool b = (a + a > a);
    cout << b << endl;

    return 0;
}

陈尚涵 发表于 2023-7-28 19:16:45

Ewan-Ahiouy 发表于 2023-7-28 19:14
https://www.luogu.com.cn/record/117876157

my code

一眼发现问题,第8行最后一个下标错了,应该是2

sfqxx 发表于 2023-7-28 19:17:28

Ewan-Ahiouy 发表于 2023-7-28 19:14
https://www.luogu.com.cn/record/117876157

my code

a=list(map(int,input().split()))
a.sort()
if min(a)+a>max(a):
    print(1)
else:
    print(0)

对比一下?

楼上确实正解,哪来的3?

陈尚涵 发表于 2023-7-28 19:17:50

Ewan-Ahiouy 发表于 2023-7-28 19:14
https://www.luogu.com.cn/record/117876157

my code

问题解决请给最佳

sfqxx 发表于 2023-7-28 19:18:14

陈尚涵 发表于 2023-7-28 19:17
问题解决请给最佳

不,我要抢最佳{:10_256:}

Ewan-Ahiouy 发表于 2023-7-28 19:19:22

陈尚涵 发表于 2023-7-28 19:16
一眼发现问题,第8行最后一个下标错了,应该是2

靠,谢谢{:10_323:}

sfqxx 发表于 2023-7-28 19:20:00

Ewan-Ahiouy 发表于 2023-7-28 19:19
靠,谢谢

/*a=list(map(int,input().split()))
a.sort()
if min(a)+a>max(a):
    print(1)
else:
    print(0)
*/

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a;
    cin >> a >> a >> a;
    sort(a, a + 3);
    bool b = (a + a > a);
    cout << b << endl;

    return 0;
}

陈尚涵 发表于 2023-7-28 19:20:01

sfqxx 发表于 2023-7-28 19:18
不,我要抢最佳

你那个是代码,我这个是错误,能一样嘛{:10_256:}
话说你用python做算法题嘛
https://www.luogu.com.cn/discuss/86673
除 C/C++/Pascal 外的语言,由于常数时间差距,不保证正确算法的执行所用时间和内存能够通过评测而不超出限制。洛谷不为此类语言提供多余的时间和内存限制。

sfqxx 发表于 2023-7-28 19:20:53

{:10_266:}草!当我啥也没说{:10_266:}草!当我啥也没说
{:10_266:}草!当我啥也没说{:10_266:}草!当我啥也没说{:10_266:}草!当我啥也没说{:10_266:}草!当我啥也没说{:10_266:}草!当我啥也没说

sfqxx 发表于 2023-7-28 19:21:28

陈尚涵 发表于 2023-7-28 19:20
你那个是代码,我这个是错误,能一样嘛
话说你用python做算法题嘛
https://www.luogu.com.cn ...

没有关系{:10_266:}
页: [1] 2
查看完整版本: 提问:最小两条边大于第三边就一定能构成三角形吗?