码迷,mamicode.com
首页 > 编程语言 > 详细

汉诺塔 python版

时间:2015-11-28 21:39:03      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

 汉诺塔问题:如果将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)

 

汉诺塔 python版

标签:

原文地址:http://www.cnblogs.com/chris-cp/p/5003439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!