Alle Kombinationen die Möglich sind auflisten ??

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Alle Kombinationen die Möglich sind auflisten ??

    Hallo Leute,
    Ich bin neu hier und habe gleich eine Frage.
    Gute Coder und Mathematiker helft mir bitte!

    Also es geht darum, dass man eingeben kann wieviel mögliche Objekte zur
    Verfügung stehen, wieviel ausgewählt werden können und daraus sollen dann
    alle möglichen Kombinationen ausgegeben werden.
    Ich erkläre das gleich an einem Beispiel.

    Ich poste hier in dieser Section, weil ich keine speziele Programmiersprache
    ins Auge gefasst habe. Wenn ihr mir helfen könnt wäre es am besten, wenn
    es in Visual Basic 6, C oder C++ realisiert würde.

    Zum Beispiel:
    Es stehen die Zahlen 1 bis 10 zur Verfügung.
    Aus dieser Menge, sollen 9 Zahlen ausgewählt werden, sodass sie hinter-
    einander eine Reihe bilden.
    Keine Zahl darf doppelt vorkommen und die Reihenfolge bleibt
    unbeachtet.
    (das ist sehr wichtig)
    Es soll nun berechnet werden wieviele mögliche Kombinationen es zur
    Auswahl von 9 Zahlen gibt. Und diese Kombinationsmöglichkeiten sollen
    ausgegeben werden.


    Ich habe bereits ausgerechnet, unter oben genannten Bedingungen, gibt
    es 10 verschiedene Möglichkeiten, 9 Zahlen auszuwählen.
    Folgende nämlich:

    Quellcode

    1. Möglichkeit 01: 1 2 3 4 5 6 7 8 9
    2. Möglichkeit 02: 2 3 4 5 6 7 8 9 10
    3. Möglichkeit 03: 1 3 4 5 6 7 8 9 10
    4. Möglichkeit 04: 1 2 4 5 6 7 8 9 10
    5. Möglichkeit 05: 1 2 3 5 6 7 8 9 10
    6. Möglichkeit 06: 1 2 3 4 6 7 8 9 10
    7. Möglichkeit 07: 1 2 3 4 5 7 8 9 10
    8. Möglichkeit 08: 1 2 3 4 5 6 8 9 10
    9. Möglichkeit 09: 1 2 3 4 5 6 7 9 10
    10. Möglichkeit 10: 1 2 3 4 5 6 7 8 10


    Also die Anzahl der Möglichkeiten kann man einfach mit einer Formel
    berechnen, aber die Möglichkeiten an sich sind schwieriger und mit mehr
    Zeitaufwand zu bestimmen.
    Deshalb wollte ich dass, das Programm das für mich erledigt, nur weiß
    ich nicht wie ich es schaffen kann, dass das Programm alle Möglichkeiten
    ausgibt.
    Wäre schön wenn mir das jemand sagen kann.


    Anmerkung:

    Wenn man die oben genannten Bedingungen nicht beachtet, dann
    errechnet man viel mehr Kombis.
    Wenn die Reihenfolge mit einbezogen wird, sieht das so aus.

    Quellcode

    1. 2 3 4 5 6 7 8 9 10

    ist genau das gleiche wie

    Quellcode

    1. 3 4 5 6 7 8 9 10 2


    Daraus folgt es gibt viel mehr Kombis, genau
    10*9*8*7*6*5*4*3*2 = 3 628 800

    Aber das wollen wir natürlich nicht!

    Wenn man Zahlen doppelt mit einbezieht und die Reihenfolge beachtet,
    dann ergeben sich:
    10^9 = 1 000 000 000 Kombinationen.
    Das wollen wir auch nicht!

    Deshalb rechnen wir:

    (10*9*8*7*6*5*4*3*2) / (9!) = 10


    So jetzt aber genug, wäre toll wenn mit wer hilft!
    Mit freundlichen Grüßen
    White Window
  • Hast du den Algorithmus mal auf Papier hinbekommen bzw hast du Online-Literatur dazu?

    Mit dynamischer Anzahl ist das echt nicht einfach...
    Hab mal das einfachste gemacht und ihn für "2 weniger realisiert". Also 8 von 10 oder 2 von 4 (doppelte sind auch noch dabei):

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. int main(void)
    4. {
    5. int wieviel=4;
    6. for(int i=0; i<wieviel; i++)
    7. {
    8. for(int j=0; j<wieviel; j++)
    9. {
    10. if(i==j) continue;
    11. for(int k=0; k<wieviel; k++)
    12. {
    13. if(k == i)
    14. cout << "*" << " ";
    15. else if(k == j)
    16. cout << "#" << " ";
    17. else
    18. cout << k+1 << " ";
    19. }
    20. cout << endl;
    21. }
    22. }
    23. return 0;
    24. }
    Alles anzeigen


    * # 3 4
    * 2 # 4
    * 2 3 #
    #
    * 3 4
    1
    * # 4
    1
    * 3 #
    # 2
    * 4
    1 #
    * 4
    1 2
    * #
    # 2 3
    *
    1 # 3
    *
    1 2 #
    *
  • Vielen Dank erstmal für die Mühe.

    Also was ich auf dem Papier gemacht habe, ist einfach die Rechnung, wieviele Möglichkeiten es gibt.

    (10*9*8*7*6*5*4*3*2) / (9!) = 10

    Dann wusste ich ja das es 10 Möglichkeiten sind.
    Dann habe ich einfach alle Möglichkeiten durch Nachdenken und überprüfen aufs Blatt geschrieben.

    Einen Algorithmus, habe ich noch nicht wirklich dafür. Deshalb fragte ich ja wie das Programm das schaffen kann.
    Aber ich werd morgen wenn ich Zeit hab mal richtig rumbasteln.

    Und bei deinem Source sind ja wie du schon sagtest, leider die doppelten noch mit dabei, aber sonst schon okay.

    Danke nochmal
    MfG
    White WIndow
  • Bastel dir eine eigene Klasse für Mengen. Mengen sind doch genau das was du suchst (Reihenfolge egal und keine Doppelten). Wieviele Elemente in einer Menge landen müssen kannst du ja mit der Formel berechnen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Hättest du vielleicht ein Beispiel wie das mit den Klassen funktioniert?
    Weil ich kann nicht so gut programmieren, deshalb frage ich ja hier nach.
    Wäre nett!

    Falls es jemandem noch was nützt, ich habe mal etwas in Worten formuliert, was bei diesem Beispiel gilt. (Leider finde ich nicht den richtigen Ausdruck, weshalb es vllt schwer zu verstehen ist)

    Steht an der letzten Stelle eine Zahl, die der Gesamtanzahl der Stellen entspricht, so gibt es nur eine Möglichkeit (wo diese Zahl am Ende steht.)
    z.B. es gibt 9 Stellen, es steht folgende Reihe:
    1 2 3 4 5 6 7 8 9
    Die 9 am Ende (an der letzten Stelle) entspricht der Gesamtanzahl der Stellen, deshalb gibt es nur eine mögliche Kombination wo eine 9 am Ende vorkommt.


    Steht an der letzten Stelle, die nächst höhere Zahl, so entsprechen die möglichen Kombinationen, der Anzahl der Stellen.
    Also steht am Ende eine 10, so gibt es 9 Möglichkeiten, wo eine 10 am Ende steht.(weil es 9 Stellen gibt)

    2 3 4 5 6 7 8 9 10
    1 3 4 5 6 7 8 9 10
    1 2 4 5 6 7 8 9 10
    1 2 3 5 6 7 8 9 10
    1 2 3 4 6 7 8 9 10
    1 2 3 4 5 7 8 9 10
    1 2 3 4 5 6 8 9 10
    1 2 3 4 5 6 7 9 10
    1 2 3 4 5 6 7 8 10

    Vorraussetzung dafür ist natürlich dass man die Zahlen nach einem gewissen System ordnet.
    Und ich weiss nicht ob man diese Sätze auch Allgemein anwenden kann!!!
    Aber bei einem anderen Beispiel ging es glaube ich auch!

    MfG