/ / Tupel generieren Modulo-Index - Algorithmus, Tupel, Kombinatorik

Generieren von Tupeln modulo index - Algorithmus, Tupel, Kombinatorik

Ich suche nach einem Algorithmus (oder einem C-likeImplementierung, keine itertools verfügbar), die alle Tupel generiert [a_0 a_1 ... a_ (n-1)] so dass 0 <= a_i <= i + 1. Hinweise auf Literatur sind ebenfalls willkommen.

Antworten:

3 für die Antwort № 1

etwas wie das?

void printTuples (int n, int[] a, int i=0) {
if (i == n) {
//print a
return;
}
for (int j=0; j<=i+1; j++) {
a[i] = j;
printTuples (n, a, i+1);
}
}

0 für die Antwort № 2

Es wird Backtracking genannt. Suche wikipedia darüber. Du kannst es sowohl rekursiv als auch iterativ machen.

Amir, er will zwischen 0 und 1 + 1, nicht zwischen 0 und 1. Und ich denke, dass das Übergeben von Arrays auf dem Stack langsamer ist, als wenn sie als global betrachtet werden.

Ich denke du willst so etwas:

int a[YOUR_LENGTH];

void backtracking (int n, int counter) {
if (counter == n) {
// do whatever
return;
}
for (int j = 0; j <= counter + 1; ++ j) {
a[counter] = j;
backtracking(n, counter + 1);
}
}