000
10.03.2006, 19:10 Uhr
~sara4251
Gast
|
Hallo Leute, ich habe ein kleines Problem. Ich will die Rekursionen entfenen. Jeder kennt ja wohl das Problem von Hanoi Tower. Nun aber, gebe ich noch eine beschraenkung. Man soll vom Tower 1 nach Tower 2 die Platten verschieben, man darf aber nicht direkt von 1 nach 2 gehen (oder von 2 nach 1). Natuerlich benutzt man auch den 3.Tower. Ich habe das mit Rekursion gemacht. Benoetigte drei Rekursionen. Nun wollte ich die Rekusion entfernen. Schaffte die letzte und die vorletzte Rekursion zu entfernen(mit hilfe von stack). Weiss aber nicht was ich mit der ersten machen soll. Habe vieles versuch, schaffte es aber nicht. Danach sollte man sie aller goto loesen, aber das ist ja der zweite Teil. Weiss jemand wie das geht? Mein Programm sieht bis jetzt so aus:
C++: |
#include <stack> #include <iostream> #include <conio.h>
using namespace std; int pom; void Hanoi(int N,int A,int B) { stack<int> s; X: while (N!=0) { Hanoi(N-1,A,B); cout<<"Von "<<A<<" nach "<<A+B<<endl; s.push(N); s.push(A); s.push(B); N--;pom=B;B=A;A=pom; goto X; } if(!s.empty()) { B=s.top(); s.pop(); A=s.top(); s.pop(); N=s.top(); s.pop(); cout<<"Von "<<A+B<<" nach"<<B<<endl; N--; goto X; } }
int main() { Hanoi(2,1,2); getch(); }
|
mod edit: BENUTZE CPP TAGS SELBER Dieser Post wurde am 14.03.2006 um 22:37 Uhr von Pablo editiert. |