Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
82
Task/Permutations/VBA/permutations.vba
Normal file
82
Task/Permutations/VBA/permutations.vba
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
Public Sub Permute(n As Integer, Optional printem As Boolean = True)
|
||||
'Generate, count and print (if printem is not false) all permutations of first n integers
|
||||
|
||||
Dim P() As Integer
|
||||
Dim t As Integer, i As Integer, j As Integer, k As Integer
|
||||
Dim count As Long
|
||||
Dim Last As Boolean
|
||||
|
||||
If n <= 1 Then
|
||||
|
||||
Debug.Print "Please give a number greater than 1"
|
||||
Exit Sub
|
||||
|
||||
End If
|
||||
|
||||
'Initialize
|
||||
ReDim P(n)
|
||||
|
||||
For i = 1 To n
|
||||
P(i) = i
|
||||
Next
|
||||
|
||||
count = 0
|
||||
Last = False
|
||||
|
||||
Do While Not Last
|
||||
'print?
|
||||
If printem Then
|
||||
|
||||
For t = 1 To n
|
||||
Debug.Print P(t);
|
||||
Next
|
||||
|
||||
Debug.Print
|
||||
|
||||
End If
|
||||
|
||||
count = count + 1
|
||||
|
||||
Last = True
|
||||
i = n - 1
|
||||
|
||||
Do While i > 0
|
||||
|
||||
If P(i) < P(i + 1) Then
|
||||
|
||||
Last = False
|
||||
Exit Do
|
||||
|
||||
End If
|
||||
|
||||
i = i - 1
|
||||
Loop
|
||||
|
||||
j = i + 1
|
||||
k = n
|
||||
|
||||
While j < k
|
||||
' Swap p(j) and p(k)
|
||||
t = P(j)
|
||||
P(j) = P(k)
|
||||
P(k) = t
|
||||
j = j + 1
|
||||
k = k - 1
|
||||
Wend
|
||||
|
||||
j = n
|
||||
|
||||
While P(j) > P(i)
|
||||
j = j - 1
|
||||
Wend
|
||||
|
||||
j = j + 1
|
||||
'Swap p(i) and p(j)
|
||||
t = P(i)
|
||||
P(i) = P(j)
|
||||
P(j) = t
|
||||
Loop 'While not last
|
||||
|
||||
Debug.Print "Number of permutations: "; count
|
||||
|
||||
End Sub
|
||||
Loading…
Add table
Add a link
Reference in a new issue