Ich muss ein Programm schreiben, das rekursiv die Schritte für das Spiel Towers of Hanoi berechnet. Das war soweit kein Problem, allerdings soll auch immer ausgegeben werden, wo sich weche scheibe befindet, in der Form, das jeder Stab ein Array symbolisiert.
Das Startarray initialisiere ich mit folgender Funktion:
Code: Alles auswählen
void initTower(int n, int *src, int *tmp, int *dst){
int i=0;
while(i<n){
src[n-i-1]=n-i;
i++;
}
schuffleTower(n, src, tmp, dst);
}
SchuffleTower ist dann mein Algorythmus, der die Schritte brechnet.
Code: Alles auswählen
void schuffleTower(int n, int *src, int *tmp, int *dst){
if(n > 0){
schuffleTower(n-1, src, dst, tmp);
showTowers(src, tmp, dst);
schuffleTower(n-1, tmp, src, dst);
}
}
Zur Ausgabe habe ich Momentan folgende Funktion:
Code: Alles auswählen
void showTowers(int *src, int *tmp, int *dst){
int i=0;
printf("A:");
while(src[i] > 0){
printf("%i ", src[i]);
i++;
}
i=0;
printf("\nB:");
while(tmp[i] > 0) {
printf("%i ", tmp[i]);
i++;
}
i=0;
printf("\nC:");
while(dst[i] > 0){
printf("%i ", dst[i]);
i++;
}
printf("\n\n");
}
A: 4321
B:
C:
für den Start. Jetzt müsste nach Schritt 1 kommen:
A: 432
B:
C: 1
Normalerweise würde ich fummeln bis das klappt, aber ich hab da etwas Zeitdruck