我在数组arr()
中有许多点。在VBA中,最快速,最有效的方法是返回可以从这些点绘制的所有可能三角形的数组combi()
?
我整理了一个简单的脚本,它对少量要点很有用。但是随着我增加点数,它会成倍地减慢速度。下面是我所拥有的简化版本。
[请注意:您将在我的代码中看到我正在做一些基本检查,以确保三角形中的所有顶点都不同。我还将每个点分开,并按“大小”对其进行排序。我这样做的原因是我将需要删除重复的三角形。当然,如果您建议的实现找到没有重复的三角形,那将是最佳选择。
我的代码:
Sub find_triangles()
Dim arr(6) As Variant
Dim combi() As Variant
arr(0) = 1
arr(1) = 2
arr(2) = 3
arr(3) = 4
arr(4) = 5
arr(5) = 6
'arr(x)= x ... etc.
ReDim combi(0)
For i = 1 To UBound(arr)
For j = 1 To UBound(arr)
For k = 1 To UBound(arr)
If Not i = j And Not j = k And Not i = k Then
m = Array(i, j, k)
ReDim temp(2)
temp(0) = Application.Small(m, 1)
temp(1) = Application.Small(m, 2)
temp(2) = Application.Small(m, 3)
combi(UBound(combi)) = temp(0) & "-" & temp(1) & "-" & temp(2)
ReDim Preserve combi(UBound(combi) + 1)
End If
Next
Next
Next
End Sub
我在数组arr()中有很多点。在VBA中,最快速,最有效的方法是返回可以从这些点绘制的所有可能三角形的数组combi()?我已经把...
@@ Noobster,