标签: algorithm graph-algorithm
给定点b [0..n-1]的数组,每个点都有.x和.y坐标。 n可能很大。
设计一个有效的问题算法:给定一个区域,找到包含给定区域的矩形中包含的最大点数。
我希望它能按时间复杂度O(n ^ 2 * k)完成,其中k是矩形或更好的最大点。
答案 0 :(得分:0)
如果你有三角形的顶点,这很简单。您可以为数组b中的每个点解决交叉积。
b
您可以计算Cross1 = [AO, AB], Cross2 = [BO, BC], Cross3 = [CO, CA]。
Cross1 = [AO, AB], Cross2 = [BO, BC], Cross3 = [CO, CA]
例如Cross1 = AO.x * AB.y - AO.y * AB.x。
Cross1 = AO.x * AB.y - AO.y * AB.x
每个变量Cross1, Cross2, Cross3必须是相同的符号。
Cross1, Cross2, Cross3
您为每个点检查此项并将点数计入矩形。然后你有kN = O(N)。
kN = O(N)