Thema Datum  Von Nutzer Rating
Antwort
Rot Kombinationen erstellen
27.04.2011 16:47:51 Till
NotSolved
06.05.2011 12:05:14 Gast82513
NotSolved
06.05.2011 20:17:15 Till
NotSolved

Ansicht des Beitrags:
Von:
Till
Datum:
27.04.2011 16:47:51
Views:
2174
Rating: Antwort:
  Ja
Thema:
Kombinationen erstellen

Hallo,

ich möchte per Makro alle möglichen Kombinationen von n aus k, bei denen die Quersumme aller Kombinationen = k ist, in ein Array schreiben.

Gelöst habe ich das erstmal so:

n=14

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
For a1 = 0 To k
For a2 = 0 To k - a1
For a3 = 0 To k - a1 - a2
For a4 = 0 To k - a1 - a2 - a3
For a5 = 0 To k - a1 - a2 - a3 - a4
For a6 = 0 To k - a1 - a2 - a3 - a4 - a5
For a7 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6
For a8 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6 - a7
For a9 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6 - a7 - a8
For a10 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6 - a7 - a8 - a9
For a11 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6 - a7 - a8 - a9 - a10
For a12 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6 - a7 - a8 - a9 - a10 - a11
For a13 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6 - a7 - a8 - a9 - a10 - a11 - a12
For a14 = 0 To k - a1 - a2 - a3 - a4 - a5 - a6 - a7 - a8 - a9 - a10 - a11 - a12 - a13
 
    If a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 = k Then
     
        AComb(n, 0) = a1
        AComb(n, 1) = a2
        AComb(n, 2) = a3
        AComb(n, 3) = a4
        AComb(n, 4) = a5
        AComb(n, 5) = a6
        AComb(n, 6) = a7
        AComb(n, 7) = a8
        AComb(n, 8) = a9
        AComb(n, 9) = a10
        AComb(n, 10) = a11
        AComb(n, 11) = a12
        AComb(n, 12) = a13
        AComb(n, 13) = a14
        n = n + 1
 
    End If
     
    x = x + 1
 
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next

Das funktioniert soweit, nur wenn sich n ändert muss ich den Code editieren und die Anzahl der Schleifen und Variablen ändern. Ich könnte den Code zwar mit einer Funktion automatisch schreiben, aber eine elegantere Lösung wäre mir lieber (z.B. rekursiv).

Hat jemand eine Idee wie man das schneller oder flexibler gestalten kann?

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Kombinationen erstellen
27.04.2011 16:47:51 Till
NotSolved
06.05.2011 12:05:14 Gast82513
NotSolved
06.05.2011 20:17:15 Till
NotSolved