Summe Determinanten
alifa
Die Permutationen der Zahlen 1 bis 9 sollen in einem Array gespeichert werden. Das gibt 362880 9-stellige Zahlen(tt). Die einzelnen Ziffern dieser Zahlen sollen der Formel q= entsprechen. Das gibt auch 362880 Werte. Diese sollen dann summiert werden. Ich habe versucht ein Makro(von Erich) anzupassen.
Kann jemand helfen?
Gruß, Erhard
Sub DeterminantenSumme() ' 362880 Permutationen
Dim zz As Long, arrE(1 To 362880) As String, ii As Integer, pp As Integer
Dim arrV(1 To 10) As Integer, nn As Long, arrW(1 To 362880) As String, q&
Dim a%, b%, c%, d%, e%, f%, g%, h%, i%, s&, t!
t = Timer
Const tt As String = "123456789"
Application.StatusBar = False
Perm tt, "", zz, arrE()
a = Mid(tt, 1, 1)
b = Mid(tt, 2, 1)
c = Mid(tt, 3, 1)
d = Mid(tt, 4, 1)
e = Mid(tt, 5, 1)
f = Mid(tt, 6, 1)
g = Mid(tt, 7, 1)
h = Mid(tt, 8, 1)
i = Mid(tt, 9, 1)
For zz = 1 To 362880
q = a * e * i + (b * f * g) + (c * d * h) - (c * e * g) - (b * d * i) - (a * f * h)
Application.Sum(q) = s
nn = nn + 1
Cells(nn, 1) = s
Application.StatusBar = zz & " / " & arrE(zz)
DoEvents
Next zz
Application.StatusBar = False
MsgBox "Fertig nach " & Round(Timer - t, 2) & " Sekunden"
End Sub
Sub Perm(aa As String, bb As String, Ze As Long, arrX() As String)
Dim ii As Long, jj As Long
jj = Len(aa)
If jj > 1 Then
For ii = 1 To jj
Perm Left(aa, ii - 1) + Right(aa, jj - ii), bb + Mid(aa, ii, 1), Ze, arrX()
Next ii
Else
Ze = Ze + 1
arrX(Ze) = bb & aa
End If
End Sub