数据结构 汉诺塔 c swift 版本

  • 汉诺塔
    题的意思
    http://www.360doc.com/content/12/0727/11/219024_226737868.shtml
    x, y , z代表三个柱子。 要把n个块i移动到 z上。

  • swift 版本

                   ///x借助y移动到z
                  func move(n:Int,x:String,y:String,z:String){
                      // 当n等一,就代表最后一个
                      if n == 1 {
                         print("\(x)->\(z)")
                      }else{
                          ///x 借助 z 移动到y
                          move(n-1, x: x, y: z, z: y)
                          ///x当前的最后一个  移动到z
                          print("\(x)->\(z)")
                          ///然后把剩下的 y借助 x 移动到 z
                          move(n-1, x: y, y: x, z: z)
                      }
                    }
    
                      move(3, x: "x", y: "y", z: "z")
    
  • c++版本

                  ///x借助 y 移动到 z
                  void move(int n,char x, char y,char z){
                      ///如果n等一1, 就直接把 x 移动到z上面
                      if (1 == n){
                          std::cout<<x<<"->"<<z<<std::endl;
                      }else{
                          ///没有等于1.
                          ///第一步先 把x上的借助z 移动到 y上
                          move(n-1, x, z, y);
                          ///现在都已经移动到 y上
                          //然后移动第n个
                          std::cout<<x<<"->"<<z<<std::endl;
                          ///然后 再把 y上借助x移动到z
                          move(n-1, y, x, z);
                          /// 完成全部移动
                      }
                  }
    
                  int main() {
                      
                      int n = 0;
                      
                      std::cin>>n;
                      
                      move(n, 'x', 'y', 'z');
                      
                      return 0;
                  }
    

个人博客: www.liangtongzhuo.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容