Ich möchte alle Teilmengen der generierten Arrays rekursiv in der Hauptmethode drucken.Alle Teilmengen eines Arrays rekursiv drucken
Die folgenden Zeilen zeigen meinen Code. Ich weiß nicht, wie man die Methode subsets() rekursiv implementiert.
public class Main {
// Make random array with length n
public static int[] example(int n) {
Random rand = new Random();
int[] example = new int[n + 1];
for (int i = 1; i <= n; i++) {
example[i] = rand.nextInt(100);
}
Arrays.sort(example, 1, n + 1);
return example;
}
// Copy content of a boolean[] array into another boolean[] array
public static boolean[] copy(boolean[] elements, int n) {
boolean[] copyof = new boolean[n + 1];
for (int i = 1; i <= n; i++) {
copyof[i] = elements[i];
}
return copyof;
}
// Counts all subsets from 'set'
public static void subsets(int[] set, boolean[] includes, int k, int n) {
// recursive algo needed here!
}
public static void main(String[] args) {
// index starts with 1, -1 is just a placeholder.
int[] setA = {-1, 1, 2, 3, 4};
boolean[] includesA = new boolean[5];
subsets(setA, includesA, 1, 4);
}
}
"Teilmengen" kann ein bisschen mehrdeutig sein. Mit dem Array '[1,2,3,4]', welche "Subsets" würden Sie erwarten? –
Sie könnten 'subsets()' nicht-rekursiv (d. H. Für _one_ subset implementieren) implementieren, dann überlegen, was ein rekursiver Aufruf tun sollte (wie definieren Sie Teilmengen, sind sie Permutationen?) Und sagen Sie uns. Dabei wird Ihnen vielleicht klar, wie Sie die Rekursion selbst implementieren würden. – Thomas
@tobias_k wie hier {}, {1}, {2}, {3}, {4}, {1,2}, {2,3}, {3,4}, {1,2,3}, {2,3,4}, {1,2,3,4} – herrh