给定一个点数组b [0..n-1],每个点都具有.x和.y坐标。 n可能很大。查找包含在具有给定区域的矩形中的最大点数
为问题设计一个有效的算法:给定一个区域,找出包含在具有给定区域的矩形中的最大点数。
我希望在时间复杂度O(n^2 * k)上完成,其中k是矩形或更好的最大点。
给定一个点数组b [0..n-1],每个点都具有.x和.y坐标。 n可能很大。查找包含在具有给定区域的矩形中的最大点数
为问题设计一个有效的算法:给定一个区域,找出包含在具有给定区域的矩形中的最大点数。
我希望在时间复杂度O(n^2 * k)上完成,其中k是矩形或更好的最大点。
如果您有三角形的顶点,这非常简单。您可以为数组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)
。
家庭作业,对吗? – m69
绝对不......这是我对一个项目的要求。 – Algor7
@ Algor7你应该给出一些关于项目内容的上下文,它可能会告诉你很多关于优化的内容(例如,如果一组点可以用函数来描述)。 – ChatterOne