给定一个坐标列表,我想知道如何知道另外两个点中间有多少点。
A(1 ; 3)
B(2 ; 2)
C(3 ; 1)
D(3 ; 2)
E(3 ; 3)
这是一个表示:
_______
|A| |E|
_______
| |B|D|
_______
| | |C|
_______
这里 B 和 D 是中点,所以答案是“2”。
我发现了一个非常低效的O(n³)
算法。
count := 0
For each point x1
For each point x2
For each point x3
If x3 is the midpoint of [x1;x2]
count := count + 1
Print count
您对更有效的算法有任何想法吗?