Files
Data-Structure/Stack/appliance/hanoi.cpp
e2hang cb72c15c85 hanoi
2025-07-23 12:52:28 +08:00

93 lines
2.2 KiB
C++

#include <iostream>
#include <stack>
using namespace std;
void hanoi(int n, int a, int b, int c){
if(n == 1){
cout << "Move 1 from stack " << a << " to " << b << "(n == 1)" << endl;
}
if(n > 1){
hanoi(n - 1, a, b, c);
cout << "Move " << n << " from stack " << a << " to " << c << endl;
hanoi(n - 1, b, c, a);
}
}
int main(){
hanoi(1, 1, 2, 3);
cout << endl;
hanoi(2, 1, 2, 3);
cout << endl;
hanoi(3, 1, 2, 3);
cout << endl;
hanoi(4, 1, 2, 3);
cout << endl;
hanoi(5, 1, 2, 3);
cout << endl;
return 0;
}
/*
Move 1 from stack 1 to 2(n == 1)
Move 1 from stack 1 to 2(n == 1)
Move 2 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 1 from stack 1 to 2(n == 1)
Move 2 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 3 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 2 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 1 from stack 1 to 2(n == 1)
Move 2 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 3 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 2 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 4 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 2 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 3 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 2 from stack 3 to 2
Move 1 from stack 1 to 2(n == 1)
Move 1 from stack 1 to 2(n == 1)
Move 2 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 3 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 2 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 4 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 2 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 3 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 2 from stack 3 to 2
Move 1 from stack 1 to 2(n == 1)
Move 5 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
Move 2 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 3 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 2 from stack 3 to 2
Move 1 from stack 1 to 2(n == 1)
Move 4 from stack 2 to 1
Move 1 from stack 3 to 1(n == 1)
Move 2 from stack 3 to 2
Move 1 from stack 1 to 2(n == 1)
Move 3 from stack 3 to 2
Move 1 from stack 1 to 2(n == 1)
Move 2 from stack 1 to 3
Move 1 from stack 2 to 3(n == 1)
*/