Hanoi塔算法

  
         【Hanoi塔简介】:
                        假设存在A,B,C三个托盘,其中A托盘中按照尺寸由小到大排列着盘子。现要求,把盘子按照这一顺序从A盘放到C盘中。
                         说明:当存在大尺寸的盘子在小尺寸盘子下时,则会把小尺寸盘子压碎。
          
          【Hanoi塔算法】:
               
               
     void Hanoi(int n, int A, int B, int C) {
             if(n == 1)     {
                  Hanoi(A, 1, C);
             }
             else     {
                  Hanoi(n-1, A, C, B);
                  move(A, n, C);
                  Hanoi(n-1, B, A, C);
             }

          
          【算法说明】:    
                         当n=1时,说明A中只存在一个盘子,而只需将其移动到C中,则算法结束。
                         当n>=2时,则需将C盘作为过度,把A托盘中的n-1个盘子先暂时放入B中,同时
                         将第n个盘子放入得到C中。其次。将A用作过度,将B中的n-1个盘子依次通过A
                         之后放入到C中。算法完成。
          

你可能感兴趣的:(算法与数据结构)