python算法之汉诺塔

代码如下:

#!/usr/bin/env python
# encoding: utf-8
"""
@author: 侠之大者kamil
@file: 汉诺塔.py
@time: 2016/3/20 20:00
"""
m = input(">>Please enter a maximum value of the sequence:")
m = int(m)+1
def move(a,b,c,n):
    if n ==1:
        print("%s ->> %s : %s" %(a[0],b[0],a[-1]))
        b.append(a.pop())
        print(x,y,z)
        return
    move(a,c,b,n-1)
    print("%s ->> %s : %s" %(a[0],b[0],a[-1]))
    b.append(a.pop())
    print(x,y,z)
    move(c,b,a,n-1)
x = [‘x‘]
y = [‘y‘]
z = [‘z‘]
for n in range(1,m)[::-1]:
    x.append(n)
move(x,y,z,m-1)
print(x,y,z)
时间: 2024-12-12 12:16:07

python算法之汉诺塔的相关文章

Python递归实现汉诺塔

Python递归实现汉诺塔: def f3(n,x,y,z): if(n==1): print(x,'--->',z) else: f3(n-1,x,z,y) print(x,'--->',z) f3(n-1,y,x,z) n=int(input('请输入汉罗塔层数:')) f3(n,'X','Y','Z') 运行结果如下:

用python turtle实现汉诺塔的移动

1.汉诺塔 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 2.算法介绍 当盘子的个数为n时,移动的次数应等于2^n – 1 后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了.首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序

【数据结构与算法】汉诺塔算法——java递归实现

汉诺塔的递归实现算法,将A中的圆盘借助B圆盘完全移动到C圆盘上, 每次只能移动一个圆盘,并且每次移动时大盘不能放在小盘上面 递归函数的伪算法为如下: if(n == 1)    直接将A柱子上的圆盘从A移动到C else    先将A柱子上的n-1个圆盘借助C柱子移动到B柱子上    直接将A柱子上的第n个圆盘移动到C柱子上    最后将B柱子上的n-1个圆盘借助A柱子移动到C柱子上 该递归算法的时间复杂度为O(2的n次方),当有n个圆盘时,需要移动圆盘2的n次方-1次 public class

韩顺平_PHP程序员玩转算法公开课(第一季)01_算法重要性_五子棋算法_汉诺塔_回溯算法_学习笔记_源代码图解_PPT文档整理

文西马龙:http://blog.csdn.net/wenximalong/ 课程说明:算法是程序的灵魂,为什么有些网站能够在高并发,和海量吞吐情况下依然坚如磐石,大家可能会说: 网站使用了服务器集群技术.数据库读写分离和缓存技术(比如memcahced和redis等),那如果我再深入的问一句,这些优化技术又是怎样被那些天才的技术高手设计出来的呢? 我在上大学的时候就在想,究竟是什么让不同的人写出的代码从功能看是一样的,但从运行效率上却有天壤之别, 就拿以前在软件公司工作的实际经历来说吧, 我是

算法:汉诺塔

[递归经典题目]汉诺塔算法 Java实现 汉诺塔非递归算法

python实现算法题-汉诺塔

def hnoi(n,a,b,c): if n == 1: print a,c else: hnoi(n-1,a,c,b) print a,c hnoi(n-1,b,a,c) hnoi(3,'a','b','c')

python 递归实现汉诺塔算法

def move(n,a,b,c): if (n == 1): print ( "第 ", n ," 步: 将盘子由 " ,a ," 移动到 " ,c) #return else: move(n-1,a,c,b) #首先需要把 (N-1) 个圆盘移动到 b print ("A==>b") move(1,a,b,c) #将a的最后一个圆盘移动到c move(n-1,b,a,c) #再将b的(N-1)个圆盘移动到c prin

数据算法之汉诺塔

static void Main(string[] args) { Console.WriteLine("请输入圆盘个数:"); int N = 0; N = Convert.ToInt32(Console.ReadLine());//强转 hanoi('A', 'B', 'C', N); Console.WriteLine(); Console.ReadKey(); } static void hanoi(char A, char B, char C, int count) { if

基于Python的汉诺塔算法

首先贴出Python编写的汉诺塔算法的代码: def hanoti(n,x1,x2,x3):    if(n == 1):        print('move:',x1,'-->',x3)        return    hanoti(n-1,x1,x3,x2)    print('move:',x1,'-->',x3)    hanoti(n-1,x2,x1,x3) hanoti(3,'A','B','C') 汉诺塔问题归根结底就是一个循环问题,循环包括两大要素:循环体.循环结束条件 首