Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Array - Permutation

VBA Array - Permutation
26.09.2014 12:38:15
Sven
Hallo Zusammen,
ich bin langsam echt am Verzweifeln, da ich keinen passenden Ansatz für die Programmierung eines Algorithmus finde.
Mein Problem ist folgendes:
Ich habe in VBA ein Array welches wie folgt aussehen kann:
a = array(1,3,5,10, ..... )
Nun soll die Summe aller Permutationen in ein neues Array geschrieben werden, das heisst:
1 + 3 = 4
1 + 3 + 5 = 9
.
.
.
1 + 5 + 10 = 16
.
.
.
3 + 5 = 8
.
.
.
usw...
Ich steh schon seit 2 Tagen auf dem Schlauch...
Wer kann mir helfen?
Grüße
Sven

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Array - Permutation
26.09.2014 12:39:22
Sven
Achso, das Array (a) kann zwischen 6 und 9 Werten haben...

AW: VBA Array - Permutation
26.09.2014 13:21:30
bst
Hi Sven,
versuche das mal so ähnlich.
cu, Bernd
--
Option Explicit
Sub x()
Dim m As Integer, n As Long, i As Long, j As Integer
Dim ar As Variant, br As Variant
ar = Array(1, 2, 4, 8, 16)
m = 1 + UBound(ar)
n = 2 ^ m
ReDim br(0 To n - 1)
For i = 0 To n - 1
br(i) = 0
For j = 0 To m - 1
If i And 2 ^ j Then br(i) = br(i) + ar(j)
Next
Next
Cells(1, 1).Resize(n) = Application.Transpose(br)
End Sub

AW: VBA Array - Permutation
26.09.2014 13:46:55
Sven
Halle Bernd,
leider funktioniert das so nicht.
Hier werden mir lediglich die Werte 0 - 31 ausgeben.
Ebenfalls steckt vermutlich ein Denkfehler in den Zeilen m = 1 + UBound(ar) und n = 2 ^ m
Die Anzahl der Fakultäten errechnen sich doch bei 5 Werten wie folgt:
1 * 2 * 3 * 4 * 5 = 120 Möglichkeiten
Bei deiner Variante komme ich auf 32 Möglichkeiten.
Oder denke ich falsch... oder ich denke ich denke beim Denken falsch... :)

Anzeige
AW: VBA Array - Permutation
26.09.2014 13:54:00
bst
Hi,
"Hier werden mir lediglich die Werte 0 - 31 ausgeben."
Ja, klar. Ich habe ja in das Array die Zahlen 1,2,4,8,16 geschrieben.
Das sind 5 Zahlen. Und dazu gibt es 2^5 Teilsummen, da Du je Zahl diese entweder zur Summe dazu nehmen kannst oder auch nicht.
Mit den Zweierpotenzen ergibt das eben 0 ... 31
0 * 1 + 0 * 2 + 0 * 4 + 0 * 8 + 0 * 16
1 * 1 + 0 * 2 + 0 * 4 + 0 * 8 + 0 * 16
0 * 1 + 1 * 2 + 0 * 4 + 0 * 8 + 0 * 16
...
1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 + 1 * 16
cu, Bernd

AW: VBA Array - Permutation
26.09.2014 14:00:59
Sven
klar, gebe ich Dir Recht... ich habe falsch gedacht... :D
super, Du hast mir sehr geholfen...

Anzeige
OwT: Bitteschön, gerne
26.09.2014 14:06:54
bst
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige