Método exhaustivo de VBA para encontrar una matriz unidimensional
El siguiente es un código VBA que utiliza recursividad para generar todas las combinaciones posibles. Este 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.
Sub GenerateCombinations()
Atenuar myArr(1 a 20) como entero
Atenuar i como entero
'Rellenar la matriz myArr , Aquí se utilizan datos de muestra
Para i = 1 a 20
myArr(i) = i
Siguiente i
'Loop para generar todas las combinaciones de longitud de 1 a 20
Para i = 1 a 20
Debug.Print "Combinaciones de longitud " & 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
Depurar.Imprimir resultado
De lo contrario
Para i = 1 a UBound(myArr)
Si InStr(resultado, CStr(myArr(i))) = 0 Entonces
GenerateCombinationsHelper myArr, k - 1, resultado & " " & myArr(i)
Finalizar si
Siguiente i
Finalizar si
Finalizar sub p >
Ejecute el código
El código primero llena la matriz myArr y luego realiza un bucle para generar 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. La función GenerateCombinationsHelper utiliza recursividad para generar combinaciones. Primero verifica si se han seleccionado k elementos 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 recursividad termina cuando el número de elementos seleccionados alcanza k. La combinación resultante se pasa en el parámetro de resultado y se genera mediante Debug.Print.