从点数组返回所有三角形的最快方法

问题描述 投票:0回答:1

我在数组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()?我已经把...

arrays vba
1个回答
1
投票

@@ Noobster,

© www.soinside.com 2019 - 2024. All rights reserved.