Skip to content

60 判断三角形 #72

Open
Open
@astak16

Description

@astak16

题目

题目链接:判断三角形

对每三个线段报告它们是否可以形成一个三角形。

以 任意顺序 返回结果表。

查询结果格式如下所示。

Create table If Not Exists Triangle (x int, y int, z int);
Truncate table Triangle;
insert into Triangle (x, y, z) values ('13', '15', '30');
insert into Triangle (x, y, z) values ('10', '20', '15');
输入:
Triangle 表:
+----+----+----+
| x  | y  | z  |
+----+----+----+
| 13 | 15 | 30 |
| 10 | 20 | 15 |
+----+----+----+
在 SQL 中,(x, y, z)是该表的主键列。
该表的每一行包含三个线段的长度。

输出:
+----+----+----+----------+
| x  | y  | z  | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No       |
| 10 | 20 | 15 | Yes      |
+----+----+----+----------+

解析

判断三角形的 4 种方法:

  1. 任意两边之和大于等于第三边
  2. 任意两边之差小于等于第三边
  3. 三边之和大于最大边的 2 倍
  4. 余弦定理
    • z² = x² + y² - 2xy * cosC
    • Cxy 的夹角,zC 的对边
SELECT
	x,
	y,
	z,
CASE
  WHEN x - y < z AND x - z < y AND z - y < x THEN "Yes" ELSE "No"
END triangle
FROM Triangle

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions