PERMUTA?ÃO

JABA 26/02/2015 21:26:57
#444814
Boa noite!

Alguém tem algum código que gere todas as variações de uma dada sequência?

Por exemplo, digamos que temos a sequencia 1 2 3 para permutar. Logo, as permutações dela seriam:

1 2 3
2 1 3
2 3 1
3 2 1
3 1 2
1 3 2

Alguém aí poderia me fazer essa colaboração?

Obrigado.
WEVERSON 27/02/2015 00:03:15
#444815
Ola Jaba,

Aqui neste site tem o que vc esta procurando...

http://www.macoratti.net/11/08/vb_comb1.htm
JABA 27/02/2015 00:51:41
#444816
Weverson, ele não gera as sequencias, apenas mostra o total de permutações.
FILMAN 27/02/2015 01:08:51
#444817
Resposta escolhida
http://www.guj.com.br/java/177532-permutacao-algoritmo-para-permutar

http://www.bearcave.com/random_hacks/permute.html

http://delphiforfun.org/Programs/Source_Listings/BigCombosSource.html

http://www.devmedia.com.br/permutacoes-de-objetos-um-algoritmo-recursivo-em-java/27512
JABA 27/02/2015 01:47:13
#444818
Filman, adaptei o codigo do site que você indicou : http://www.bearcave.com/random_hacks/permute.html

Ficou assim:

Private Sub print(v As Integer(), size As Integer)
Dim s As String = [Ô][Ô]
If (v.Length > 0) Then
For i As Integer = 0 To size - 1
s = s + [Ô] [Ô] + v(i).ToString
Next
End If
MsgBox(s)
End Sub

Private Sub permute(v As Integer(), start As Integer, n As Integer)
If (start = n - 1) Then
print(v, n)
Else
For i As Integer = start To n - 1
Dim tmp As Integer = v(i)
v(i) = v(start)
v(start) = tmp
permute(v, start + 1, n)
v(start) = v(i)
v(i) = tmp
Next
End If
End Sub

[ô]Para chamar:
Dim v As Integer() = {1, 2, 3}
permute(v, 0, v.Length)

Obrigado a todos pela colaboração!
Tópico encerrado , respostas não são mais permitidas