Algorithmus, um alle Kombinationen der Größe n aus einem Array (Java) zu erhalten? [geschlossen

Right jetzt versuche ich, eine Funktion zu schreiben, die ein Array und eine ganze Zahl n nimmt und eine Liste jeder Kombination der Größe n (also eine Liste von int-Arrays) gibt. Ich kann es mit n verschachtelten Schleifen schreiben, aber dies funktioniert nur für eine bestimmte Größe der Teilmenge. Ich kann nicht herausfinden, wie man es verallgemeinert, um für irgendeine Größe der Kombination zu arbeiten. Ich denke, ich muss Rekursion verwenden?

Dies ist der Code für alle Kombinationen von 3 Elementen, und ich benötige einen Algorithmus für eine beliebige Anzahl von Elementen.

import java.util.List;
import java.util.ArrayList;

public class combinatorics{
    public static void main(String[] args) {

        List<int[]> list = new ArrayList<int[]>();
        int[] arr = {1,2,3,4,5};
        combinations3(arr,list);
        listToString(list);
    }

    static void combinations3(int[] arr, List<int[]> list){
        for(int i = 0; i<arr.length-2; i++)
            for(int j = i+1; j<arr.length-1; j++)
                for(int k = j+1; k<arr.length; k++)
                    list.add(new int[]{arr[i],arr[j],arr[k]});
    }

    private static void listToString(List<int[]> list){
        for(int i = 0; i<list.size(); i++){ //iterate through list
            for(int j : list.get(i)){ //iterate through array
                System.out.printf("%d ",j);
            }
        System.out.print("\n");
        }
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage