algorithm - 找到包含在固定大小的圆圈中的最多点

标签 algorithm optimization geometry

这是在一位 friend 谈论编程竞赛时出现的,我们想知道最好的方法是什么:

给定一个点列表,找到包含最多点的预定大小圆的中心。如果有多个这样的圆圈,找到其中一个很重要。

示例输入:1000 个点,在一个 500x500 的空间中,一个直径为 60 的圆。

最佳答案

除非我遗漏了一些明显的东西,否则我认为答案很简单。

对于一个矩形区域MxN,点数P,半径R:

  • 将 MxN 区域的映射(例如 2D 数组)初始化为全零
  • 对于你的每一个P点
    • 将半径 R 内的所有 map 点增加 1
  • 找到具有最大值的 map 元素 - 这将是您正在寻找的圆的中心

这是 O(P),假设 P 是感兴趣的变量。

关于algorithm - 找到包含在固定大小的圆圈中的最多点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151162/

相关文章:

c++ - 对二维线对执行操作的最佳方法是什么?

c# - new Rectangle() c# 的浮点参数而不是 int 参数?

algorithm - 将后序二叉树遍历索引转换为层序(广度优先)索引

algorithm - 寻找最少的变换次数

WPF 缓慢的渲染/动画性能?

javascript - 计算任意旋转的最大矩形尺寸,以适合边界框

java - 如何在Java JTS中找到给定线段的平行线(源代码行上方和下方的平行线)?

algorithm - 用于估计分数的分类算法

c# - Windows 窗体计算器算法。排序和最高/最低数字

c++ - 复制到数组时的 memcpy 与赋值;为什么这会生成不同的代码?