
Algoritmo de permutación
Publicado por Ana (1 intervención) el 29/04/2014 23:41:18
Hola a todos
Necesito hacer un algoritmo de permutación que muesre todas las combinaciones posibles, pero que las haga dependiendo de un número que ingrese el usuario. Por ejemplo permutar 12345 tomando de 2 elementos, entonces saldrían:
12
13
14
15
21
23
24
25
31
32
34
35
41
... y así sucesivamente.
Encontré una entrada del 2007 (http://www.lawebdelprogramador.com/foros/Visual_Basic/892503-permutaciones.html#last) en el que proponían esto:
Coloca en un Form un TextBox con el número que quieres permutar (p.e. 12345) además un ListBox (para mostrar los resultados) y un CommandButton y le pones este codigo
Option Base 1
Aquí salen todas las permutaciones del número de elementos que se ingresen, ejemplo: 1234, arroja:
1234
1243
1342
1324
1432
1423
2341
2314
2413
... y así sucesivamente.
¿Hay forma de modificar el algoritmo?
Muchas gracias.
Necesito hacer un algoritmo de permutación que muesre todas las combinaciones posibles, pero que las haga dependiendo de un número que ingrese el usuario. Por ejemplo permutar 12345 tomando de 2 elementos, entonces saldrían:
12
13
14
15
21
23
24
25
31
32
34
35
41
... y así sucesivamente.
Encontré una entrada del 2007 (http://www.lawebdelprogramador.com/foros/Visual_Basic/892503-permutaciones.html#last) en el que proponían esto:
Coloca en un Form un TextBox con el número que quieres permutar (p.e. 12345) además un ListBox (para mostrar los resultados) y un CommandButton y le pones este codigo
Option Base 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub Command1_Click()
Dim x As Integer, i As Integer
Dim a() As String
x = Len(Text1)
ReDim a(x)
For i = 1 To Len(Text1)
a(i) = Mid(Text1, i, 1)
Next i
Permutaciones a(), x, x
MsgBox List1.ListCount & " permutaciones."
End Sub
Sub Permutaciones(a() As String, j, k As Integer)
Dim i As Integer, s As String, sTemp As String
If j = 1 Then
For i = 1 To k
s = s & a(i)
Next i
List1.AddItem s
Else
For i = 1 To j
sTemp = a(i)
a(i) = a(j)
a(j) = sTemp
Permutaciones a, j - 1, k
sTemp = a(j)
a(j) = a(i)
a(i) = sTemp
Next i
End If
End Sub
Aquí salen todas las permutaciones del número de elementos que se ingresen, ejemplo: 1234, arroja:
1234
1243
1342
1324
1432
1423
2341
2314
2413
... y así sucesivamente.
¿Hay forma de modificar el algoritmo?
Muchas gracias.
Valora esta pregunta


0