Rekursiver Ansatz gesucht
-
Hallo,
ich bin auf der Suche nach einer rekursiven Lösung für den unten genannten Code. Das Programm soll alle Kombinationsmöglichkeiten des Arrays elemente darstellen. Das Programm funktioniert schon so wie es jetzt ist. Ich würde das ganze nur gern rekursiv lösen da die iterative Lösung ja sehr unflexibel ist.Wenn ich wüsste wie man das Problem nennt was ich unten versuche zu lösen würde mir das bei meinen Recherchen schon sehr helfen. Eine Permutation isses ja nicht da sich die Elemente ja wiederholen können.
#include <stdio.h> int main() { //Definition der einzelnen Elemente char elemente[6]={'a','b','c','d','e','f'}; //Definition der Zählvariablen, int i,j,k,l,m,n; int z=0; for (i=0;i<=5;i++) { for (j=0;j<=5;j++) { for (k=0;k<=5;k++) { for (l=0;l<=5;l++) { for (m=0;m<=5;m++) { for (n=0;n<=5;n++) { printf("%c%c%c%c%c%c\n",elemente[i],elemente[j],elemente[k],elemente[l],elemente[m],elemente[n]); z++; } } } } } } printf("\n#############################\n"); printf("Es gibt %i Kominationsmoeglichkeiten.\n",z); printf("#############################"); getchar(); return 0; }
Freundliche Grüße
Duffy
-
Lösungsansatz: Backtracking
void print_var(char* data, int pos,int size) { if(pos==size) printf("%.*s",data,size); else for(char i='a',i<='f';++i) { data[pos]=i; print_var(data,pos+1,size); } }
(PS: Bin mir nicht 100% sicher, aber afair heißt das "Variationen")