Liste aller möglicher Kombinationen

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

  • Liste aller möglicher Kombinationen

    Hallo,
    ich möchte ein Programm schreiben, dass zunächst eine Methode enthält, die alle möglichen Kombinationen beim n-maligen werfen einer Münze ausgibt und dann noch eine, die das gleiche bei n-maligen Werfen eines Wüfels mit m Seiten hat.
    Bsp. bei Münzwurf:
    n = 3
    Ausgabe:
    1,1,1
    1,1,2
    1,2,1
    1,2,2
    2,1,1
    2,1,2
    2,2,1
    2,2,2

    die Reihenfolge soll dabei nicht wichtig sein

    Meine Ideen:
    zunächst erstelle ich eine Liste, die die Elemente 1 und 2 enthält
    die Anzahl der möglichen Kombinationen soll immer 2^n sein (bei der Münze)
    also würde ich über eine for-Schleife, mit for(s=0 ; s<= 2^n ; s++) die Kombinationen ausgeben lassen.
    wie ich innerhalb der for-Schleife fortfahre, da habe ich leider nicht wirklich verwendbare Ideen

    Ich würde mich über zahlreiche Ratschläge freuen. Bin blutiger Anfänger. :D
  • So könnte eine Lösung aussehen, aber die ist nicht perfekt!!!

    Quellcode

    1. public class Test {
    2. public static int maxAnzSeiten = 2;
    3. public static int maxAnzVersuche = 3;
    4. public static void main(String[] args) {
    5. rekursion("", 1, 1);
    6. }
    7. public static void rekursion(String erg, int versuch, int seite){
    8. String neuErg = erg + " " + seite + ",";
    9. if(versuch < maxAnzVersuche){
    10. rekursion(neuErg, versuch + 1, seite);
    11. }else{
    12. System.out.println(neuErg);
    13. }
    14. if(seite < maxAnzSeiten){
    15. rekursion(erg, versuch, seite + 1);
    16. }
    17. if((versuch < maxAnzVersuche) && (seite < maxAnzSeiten)){
    18. neuErg = erg + " " + (seite + 1) + ",";
    19. rekursion(neuErg, versuch + 1 , seite);
    20. }
    21. }
    22. }
    Alles anzeigen
  • Du kannst das ja als ein Zählen bis zur Anzahl der Möglichkeiten im Zahlensystem zur Basis m auffassen. (mit ein wenig Kosmetik bzgl. des Auffüllens mit Nullen :))
    Also so:

    Quellcode

    1. import java.util.Arrays;
    2. public class Main {
    3. public static void main(final String... args) {
    4. System.out.println(Arrays.toString(permutations(3, 2)));
    5. }
    6. private static String[] permutations(final int tries, final int alphabetLength) {
    7. final int n = (int)Math.pow(alphabetLength, tries);
    8. final String[] ret = new String[n];
    9. for(int i = 0; i < n; ++i) {
    10. final StringBuilder raw = new StringBuilder(Integer.toString(i, alphabetLength)).reverse();
    11. while(raw.length() < tries) {
    12. raw.append("0");
    13. }
    14. ret[i] = raw.toString();
    15. }
    16. return ret;
    17. }
    18. }
    Alles anzeigen