AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0004. 魔法世界的棋盘

简单通过率 77% · 提交 123 · 通过 95
枚举模拟数学

小慕正在设计一个8×8的网格项目,网格左下角坐标为 `[0, 0]`,右上角坐标为 `[7, 7]`。网格上的每个点可以用坐标 `(x, y)` 表示。 项目中已经标记了两个关键点 `p1` 和 `p2`。小慕需要找到第三个关键点 `p3`,使得这三个点能够 ,并满足以下 特殊规则: 1. 直线规则:三点必须形成以下四种直线之一: - 横线:平行于 `x` 轴。 - 竖线:平行于 `y` 轴。 - 斜线:以 `45°` 或 `135°` 角倾斜。 2. :三点在网格上形成的直线段必须连续。即,三个点在直线上的位置之间不能有其他未被标记的点间隔。 3. 坐标优先级:如果有多个符合条件的点,选择 的点作为结果: - 优先选择 `x` 最小的点; - 如果 `x` 相等,则选择 `y` 最小的点。 如果无法找到符合条件的点,则输出 `-1 -1`。

提示:带虚线的词点一下有通俗解释。

输入描述

输入共四行: 1. 前两行包含两个整数 `x1` 和 `y1`,表示魔法点 `p1` 的坐标。 2. 后两行包含两个整数 `x2` 和 `y2`,表示魔法点 `p2` 的坐标。 保证输入点均在棋盘范围内 `0 <= x, y <= 7`,且 `p1` 和 `p2` 互不相同。

输出描述

输出两个整数 `x3 y3`,表示找到的第三个点的坐标。如果无法找到符合条件的点,则输出 `-1 -1`。

示例

示例 1

输入

1
0
2
0

输出

0 0

说明:点 `[0, 0]` 和 `[3, 0]` 都可以使三点在同一直线上并且相邻。但 `[0, 0]` 坐标最小,因此选择 `[0, 0]`。

示例 2

输入

1
0
7
3

输出

-1 -1

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
0 1 2 3 4 5 6 7 7 6 5 4 3 2 1 0 p1 p2 p3(0,0) 示例:横线连续 p1=(1,0), p2=(2,0) p3=(0,0) 满足条件 三点在横线上且连续 (0,0) 比 (3,0) 坐标更小 所以选择 (0,0)
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「魔法世界的棋盘」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。