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:
1889
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

        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