2016-04-17 52 views
0

给定一个点数组b [0..n-1],每个点都具有.x和.y坐标。 n可能很大。查找包含在具有给定区域的矩形中的最大点数

为问题设计一个有效的算法:给定一个区域,找出包含在具有给定区域的矩形中的最大点数。

我希望在时间复杂度O(n^2 * k)上完成,其中k是矩形或更好的最大点。

+0

家庭作业,对吗? – m69

+0

绝对不......这是我对一个项目的要求。 – Algor7

+2

@ Algor7你应该给出一些关于项目内容的上下文,它可能会告诉你很多关于优化的内容(例如,如果一组点可以用函数来描述)。 – ChatterOne

回答

0

如果您有三角形的顶点,这非常简单。您可以为数组b中的每个点求解交叉积。您可以计算出Cross1 = [AO, AB], Cross2 = [BO, BC], Cross3 = [CO, CA]

例如Cross1 = AO.x * AB.y - AO.y * AB.x

每个变量Cross1, Cross2, Cross3必须是相同的符号。

您为每个点检查此点并将点数计入矩形。那么你有kN = O(N)

rectangle

+0

我不认为这回答了这个问题。问题不在于检查给定形状内的哪些点,而在于选择和定位形状以优化其中的点数。 (如果问题有点含糊,最好首先要求澄清,然后再努力回答它。) – m69

+0

对不起,该矩形必须是轴对齐的 – Algor7

+0

对不起,您误解了问题陈述。只给出矩形区域,我们必须找到所有可能的相同区域的矩形,然后找出哪个矩形包含最大点。我们对矩形不感兴趣,但对最大点数感兴趣。 – Algor7

相关问题