Liny_@NotePad

沉迷ACG中

设计一个递归算法求解汉诺塔问题

  算了好久 囧

  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void move(int n, int x, int y){
  5.         static int t = 1;
  6.         cout<<"第"<<t++<<"步 "<<char(x+64)<<"(第"<<n<<"号盘子) -> "<<char(y+64)<<endl;
  7. }
  8.  
  9. void hanoi(int n,int a, int b, int c){
  10.         if(n==1)
  11.                 move(1,a,c);
  12.         else{
  13.                 hanoi(n-1,a,c,b);
  14.                 move(n,a,c);
  15.                 hanoi(n-1,b,a,c);
  16.         }
  17. }
  18.  
  19. int main(){
  20.         int n;
  21.  
  22.         cout<<"请输入第一根柱子上的盘子数:";
  23.         cin>>n;
  24.  
  25.         hanoi(n,1,2,3);
  26.  
  27.         return 0;
  28. }