Liny_@NotePad

沉迷ACG中

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

YOYO posted @ 2009年3月10日 21:05 in 【算法】与【数据结构】 with tags 递归 汉诺塔 , 2950 阅读

  算了好久 囧

  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. }

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter