您的位置:首页 > 编程语言 > Python开发

汉诺塔 python版

2015-11-28 21:01 603 查看
 汉诺塔问题:如果将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;

  }

#!/usr/bin/python
#encoding=utf-8

def hanoi(n, x, y, z):   //x表示第x根柱子,y表示第y根柱子,z表示第z根柱子
if n==1:
print x,'-->',z
else:
#将前n-1个盘子移动到y:
hanoi(n-1, x, z, y)
print x, '-->', z    #x柱子移动到z上
#将y上的n-1个盘子移动到z上
hanoi(n-1, y, x, z)
import sys

hanoi(int(sys.argv[1]), 'x', 'y', 'z')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: