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

P2568. AI面板识别

中等通过率 64% · 提交 135 · 通过 87
排序模拟枚举

小慕在项目中遇到了一个AI识别指示灯的问题。面板上一共有N(1 ≤ N ≤ 100)个指示灯,每个灯大小相同,且任意两个灯之间没有重叠。 由于AI识别存在误差,每次识别到的指示灯位置可能略有不同,每个灯用4个坐标值来描述其大小和位置(左上角x1, y1,右下角x2, y2)。小慕需要按照先行后列的顺序输出这些指示灯的编号,排序规则如下: 1. 每次在尚未排序的灯中,挑选出最高的灯作为。 2. 找出所有与基准灯属于同一行的灯,并对它们进行排序。两个灯是否属于同一行,由它们的高低偏差是否不超过灯的半径来决定(即两个灯的y坐标差 ≤ )。

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

输入描述

第一行为N,表示灯的个数 接下来N行,每行为1个灯的坐标信息,格式为: 编号 x1 y1 x2 y2 - 编号全局唯一 - 1 <= 编号 <= 100 - 0 <= x1 < x2 <= 1000 - 0 <= y1 < y2 <= 1000

输出描述

排序后的编号列表,编号之间以空格分隔。

示例

示例 1

输入

5
1 0 0 2 2
2 6 1 8 3
3 3 2 5 4
5 5 4 7 6
4 0 4 2 6

输出

1 2 3 4 5

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

看不懂题目?点开图解
1 2 3 4 5 第1行(y坐标差≤灯高一半) 第2行 第3行 排序顺序:先按行从上到下,再按列从左到右 输出:1 2 3 4 5
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「AI面板识别」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。