Page 1 of 1

Generieren Sie alle möglichen Kombinationen einer Reihe von Größe N mit genau K -Subarrays

Posted: 06 May 2025, 07:01
by Anonymous
Es ist ein Kombinatorproblem. Wir können das Array auf maximal n-1 und außerhalb des Arrays verteilt, wir müssen K-1-Partitionen wählen. /> Erwartete Ausgabe: (3-dimensionales Array) < /H2>

Code: Select all

[
[[1], [2], [3, 4, 5, 6]],
[[1], [2, 3], [4, 5, 6]],
[[1], [2, 3, 4], [5, 6]],
[[1], [2, 3, 4, 5], [6]],
[[1, 2], [3], [4, 5, 6]],
[[1, 2], [3, 4], [5, 6]],
[[1, 2], [3, 4, 5], [6]],
[[1, 2, 3], [4, 5], [6]],
[[1, 2, 3, 4], [5], [6]],
]
< /code>
Einschränkungen: < /p>

 Subarrays sollten mindestens 1 Element haben. Weit, ich habe eine rekursive Methode ausprobiert, aber sie liefert falsche Ergebnisse. Ich kann meinen Kopf nicht darum wickeln, wie ich es korrigieren kann. Ich brauche eine Antwort, die erklärt, wie ich zuerst dieses [url=viewtopic.php?t=20324]Problem[/url] und die Intuition dahinter angehen soll, und korrigieren Sie dann meinen Code und weisen darauf hin, wo ich falsch gelaufen bin. < /P>
Mein Code: < /p>
 public static void main(String[] args) {
int n = 6;
int k = 3;
int[] arr = new int[]{1,2,3,4,5,6};
ArrayList result = new ArrayList();
ArrayList eachComb = new ArrayList();
ArrayList eachSubArray = new ArrayList();
int index = 0;

generateCombinations(arr, k, index, eachSubArray, eachComb, result);

for (ArrayList each : result) {
for(ArrayList eachh: each) {
System.out.println(eachh);
}
System.out.println("-------------------------------");
}
}

private static void generateCombinations(int[] arr, int k, int index, ArrayList eachSubArray,
ArrayList eachComb, ArrayList result) {

if(k==0 || index==arr.length) {
return;
}

if(!eachSubArray.isEmpty()) {
eachComb.add(new ArrayList(eachSubArray));
}

if(k==1) {
ArrayList last = new ArrayList();
for(int i=index; i