• 汉诺塔 python版


     汉诺塔问题:如果将n个盘子(由小到大)从a通过b,搬到c,搬运过程中不能出现小盘子在大盘子下面的情况。

     思路分析:假设前要移动第100个盘子,分两步走,移动第99个;再移动第100个;而要移动第99个,同样分两部,移动第98个,再移动第99个,以此类推;

      if(n>1)

      {

        1、先将A柱上的前n-1个盘子从A借助C移动到B;

        2、把A柱子上的第n个盘子直接移动到C;

        3、再将B柱子上的n-1个盘子借助A移动到C;

      }

     1 #!/usr/bin/python 
     2 #encoding=utf-8
     3 
     4 def hanoi(n, x, y, z):   //x表示第x根柱子,y表示第y根柱子,z表示第z根柱子
     5     if n==1:
     6         print x,'-->',z
     7     else:
     8         #将前n-1个盘子移动到y:
     9         hanoi(n-1, x, z, y)
    10         print x, '-->', z    #x柱子移动到z上
    11         #将y上的n-1个盘子移动到z上 
    12         hanoi(n-1, y, x, z)
    13 import sys 
    14 
    15 hanoi(int(sys.argv[1]), 'x', 'y', 'z')
  • 相关阅读:
    第一轮 J
    第一轮 M
    第一轮 L
    第一轮 K
    第一轮 I
    第一轮 H
    第一轮 F
    第一轮 E
    第一轮 C
    12杭州online E 模拟
  • 原文地址:https://www.cnblogs.com/chris-cp/p/5003439.html
Copyright © 2020-2023  润新知