Red de conocimiento informático - Problemas con los teléfonos móviles - VB implementa salida combinada de matriz

VB implementa salida combinada de matriz

Si se trata de un número fijo de combinaciones de elementos, es muy sencillo utilizar varios bucles For anidados para resolverlo, y no es necesario juzgar la duplicación. La entrada utiliza una matriz de controles de cuadro de texto y la propiedad MultiLine del cuadro de texto de salida debe establecerse en Verdadero para que se puedan mostrar varias líneas. Hay 1716 combinaciones posibles de 6 elementos no repetidos de 13 elementos. Subcomando privado1_Click() Atenuar a(0 a 12) Como entero Atenuar i como entero Para i = 0 a 12 a(i) = Texto(i).Texto Siguiente Texto1.Texto = s(a) Fin de la función subprivada s( a() Como entero) Como cadena Dim i1 Como entero Dim i2 Como entero Dim i3 Como entero Dim i4 Como entero Dim i5 Como entero Dim i6 Como entero Dim c Como entero Dim r Como cadena Para i1 = 0 a 12 - 5 Para i2 = i1 + 1 a 12 - 4 Para i3 = i2 + 1 a 12 - 3 Para i4 = i3 + 1 a 12 - 2 Para i5 = i4 + 1 a 12 - 1 Para i6 = i5 + 1 a 12 r = r & a(i1) & "," & a(i2) & "," & a(i3) & "," & a(i4) & "," & a(i5) & "," & a(i6) & vbCrLf c = c + 1 DoEvents Siguiente Siguiente Siguiente Siguiente Siguiente Siguiente MsgBox c s = r Función final Sin embargo, la desventaja de este algoritmo es que solo se puede usar para un número fijo y, si el número es grande, será muy problemático. para escribir el programa. A continuación se muestra otro código que puede calcular cualquier número de combinaciones de elementos.

Subcomando privado1_Click() Atenuar a(0 a 12) como entero Atenuar i como entero para i = 0 a 12 a(i) = Texto(i).Texto Siguiente Texto1.Texto = s(a, 13, 6) Fin Sub Función privada s(a() Como entero, ByVal n Como entero, ByVal m Como entero) Como cadena Dim b() Como entero Dim r Como cadena Dim c Como entero ReDim b(0 To m - 1) ss a, n, b, m, 0, r, c MsgBox c s = r Función final Private Sub ss(a() Como entero, ByVal n Como entero, b() Como entero, ByVal m Como entero, ByVal d Como entero, r Como cadena, c como entero) Dim i como entero Si m = 0 Entonces para i = 0 a UBound(b) - 1 r = r & a(b(i)) & "," Siguiente r = r & a(b(UBound( b))) & vbCrLf c = c + 1 Salga del subfin si m > n o n <= 0 Entonces salga del subb(d) = n - 1 ss a, n - 1, b, m - 1, d + 1, r, c ss a, n - 1, b, m, d, r, c End Sub

Aceptar