Red de conocimiento informático - Problemas con los teléfonos móviles - Encuentre una lista exhaustiva de matrices unidimensionales usando VBA

Encuentre una lista exhaustiva de matrices unidimensionales usando VBA

A continuación se muestra un fragmento de código VBA que utiliza un método recursivo para generar todas las combinaciones posibles. El código generará todas las combinaciones de longitud de 1 a 20 en myArr. Tenga en cuenta que este enfoque exhaustivo puede llevar mucho tiempo cuando la matriz es grande.

ChildrenGenerateCombinations()

Atenuar myArr(1 a 20) como entero

Atenuar i como entero

'Rellene la matriz myArr, usando los datos de muestra aquí

For i = 1 To 20

myArr(i) = i

Siguiente i

' Bucle a genera todas las combinaciones de longitudes de 1 a 20

Para i = 1 a 20

Debug.Print "Combinación de longitudes " & i & ":"

' GenerateCombinationsHelper myArr, i, ""

Siguiente i

End Sub

Sub GenerateCombinationsHelper(myArr como variante, k como entero, resultado como cadena)

Atenuar i como entero

Atenuar j como entero

Si k = 0 entonces

Debug.p>

Si InStr(resultado, CStr(myArr(i))) = 0 Then

GenerateCombinationsHelper myArr, k - 1, resultado & " " &myArr(i)

Finalizar si

Siguiente i

End If

End Sub

Ejecute el código

El código primero llena la matriz myArr, luego recorra todas las combinaciones de longitud de 1 a 20. Para cada longitud, el código llama a la función GenerateCombinationsHelper para generar todas las combinaciones posibles. Primero verifica si k elementos ya están seleccionados y, de ser así, genera el resultado; de lo contrario, se llama a sí mismo de forma recursiva, selecciona un elemento que aún no ha sido seleccionado, lo agrega al resultado y luego continúa seleccionando el siguiente elemento. La combinación resultante se pasa en el parámetro de resultado y se genera mediante Debug.Print.