algorithm - 如何找到对元素列表进行分组所需的最少组数?

标签 algorithm geometry

例如:

有一个元素列表,例如一个排序的整数列表 {1,2,3,4,6,8,11}。

我想找到最少数量的组,其中组中的每个成员都有一个 彼此之间的合格差异,例如彼此小于或等于 2。

在这种情况下,我们可以看到答案应该是 4,一种可能的解决方案是 {1,2,3},{4,6},{8},{11}。

求最小数的算法怎么写?

此外,我们可以在二维中考虑:

有一个点列表 {(3,3),(3,6),(6,9)}。我需要用多少个长度为 3 的正方形来覆盖所有这些点?这里的答案应该是2。但是如何通过编程找到呢?

我问这个问题是为了解决问题 Square Fields在 Google Code Jam 实践竞赛中,但解决此问题第一部分的任何答案对我来说都足够好。

最佳答案

对于一维:按升序对元素进行排序,并通过将新组的左边界设置为尚未被任何组覆盖的最小元素来贪婪地形成组。

关于algorithm - 如何找到对元素列表进行分组所需的最少组数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746590/

相关文章:

c++ - 寻找搜索的效率?算法。 C++

algorithm - Google Reader 如何从网页中提取新闻条目?

matlab - 计算 2 个向量之间的角度,顺时针从 0 到 2*pi

c# - 计算沿直线 A-B 与 A 的给定距离处的点

ios - 如何在 MapKit 上绘制围绕多个注释/坐标的圆形叠加层?

algorithm - 我的算法太慢了

algorithm - 如何赢得这场比赛?

c++ - 有错误或不准确的二进制搜索

algorithm - 合并附近的多边形

algorithm - 如何最小化两个子多边形的最大纵横比?