华为 · 计算几何 · 算法编程题
华为 计算几何 时限 1 秒 / 256 MB

题目描述

·
任务: 用DBSCAN在二维或三维实数坐标上做聚类,输出“簇的数量”和“噪声点数量”。
·
定义: 距离为欧氏距离;某点的邻域半径为eps;若该点邻域内样本数(含自身)≥ min_samples,则为核心点;从未访问核心点出发,按邻域可达关系扩展一个簇;不被任何簇吸收的点视为噪声

输入输出

输入描述
· 第一行: eps min_samples x
· 接下来x行: 每行2个或3个实数(同一测试仅一种维度)
输出描述
· 一行: 簇数 噪声点数

样例共 1 组

样例 1 · 前3个点彼此间距都≤1.5,形成一簇;后3个点同理形成另一簇;无噪声。
输入
1.5 2 6
0 0
0.5 0
0 0.5
10 10
10.5 10
10 10.5
输出
2 0

算法解析依据一般

考点:计算几何

限制 1 秒 / 256MB | 标准输入输出

题目画像

  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

参考方向:计算几何

把几何关系转成坐标运算,用整数运算避免浮点误差。

思路框架(计算几何 通法 · 非本题专属)

  1. 把点、向量、线段用坐标表示。
  2. 几何判定(平行、垂直、共线、相交)尽量用叉积/点积的整数形式:叉积为 0 即共线。
  3. 距离用平方比较,避免开方带来的浮点误差。
  4. 面积用叉积(鞋带公式)计算。

实现要点:叉积 cross = x1*y2 - x2*y1;用它判断顺时针/逆时针和共线。

复杂度:时间 O(n) ~ O(n²) | 空间 O(n)

该范式的通法易错点

  • 用浮点相等判断几何关系(应用整数叉积)。
  • 没考虑三点共线、重合等退化情况。
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。

样例解读

样例 1:输入 1.5 2 6 / 0 0 / 0.5 0 / 0 0.5 / 10 10 / 10.5 10 / 10 10.5 → 输出 2 0

前3个点彼此间距都≤1.5,形成一簇;后3个点同理形成另一簇;无噪声。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2025年秋招-华为-10月10号AI岗。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解