算法 - 汉诺塔问题(Python)

def hanoi(n, a, b, c):
	if(n == 1):
		print(a, '-->', c)
		return
	hanoi(n - 1, a, c, b)
	print(a, '-->', c)
	hanoi(n - 1, b, a, c)

# Output of hanoi(3, 'A', 'B', 'C'):
# A --> C
# A --> B
# C --> B
# A --> C
# B --> A
# B --> C
# A --> C
时间: 2024-10-15 08:51:39

算法 - 汉诺塔问题(Python)的相关文章

python算法-汉诺塔问题

汉诺塔问题   初始状态: 思考:当盘子的个数是3的时候,大家写出移动顺序 移动的步骤: 3个盘子,从a到c 1.前面两个盘子,从a到b 1)把前面一个盘子,从a到c a->c 2)把第二个盘子,从a到b a->b 3)把c上的盘子,从c到b c->b 2.最后一个盘子,从a到c a->c 3.把b上的两个盘子,从b到c 1)把前面一个盘子,从b到a b->a 2)把第二个盘子,从b到c b->c 3)把a上的盘子,从a到c a->c 总结: n个盘子,从a到c

[算法]——汉诺塔的递归深度

今天早晨在上班的路上,一好朋友突然提到之前的一个计算机的考题,汉诺塔(相信大家都玩过)的递归深度. 由于很久没有看算法,以及脑容量有限,当时没有多想. 来到公司后,把公式列了一下,终于清晰多了. 下面假设3根柱子编号为1,2,3. 主要思路: 把n个圆盘从3号移到1号 = 把n-1个圆盘从3号移到2号 + 把第n个圆盘从3号移到1号 + n-1个圆盘从2号移到1号 列出公式: f(n) = f(n-1) + 1 + f(n-1) = 2f(n-1) + 1 计算公式: 接下来就是数学题了, 利用

数据结构与算法 —— 汉诺塔问题

可参考视频:https://www.bilibili.com/video/av18710547/?p=34 汉诺塔问题是一个经典的问题.汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘.问应该如何操作? 问题:有X,Y,Z三根柱子,在X柱子

算法——汉诺塔问题(递归典型)

汉诺塔 汉诺塔是一个发源于印度的益智游戏,也叫河内塔.相传它源于印度神话中的大梵天创造的三个金刚柱,一根柱子上叠着上下从小到大64个黄金圆盘.大梵天命令婆罗门将这些圆盘按从小到大的顺序移动到另一根柱子上,其中大圆盘不能放在小圆盘上面.当这64个圆盘移动完的时候,世界就将毁灭. 算法分析: 一阶汉诺塔的移动,显而易见,从 A->C 然后,我们可以探讨二阶与一阶的联系: 不光是对于二阶,其实N阶汉诺塔相当于执行了三大步骤:  1.在ACB的顺序下执行了(N-1)阶汉诺塔的移法 2.从A->C移动了

[算法]汉诺塔

#include <iostream> #include <cmath> using namespace std; int hannuota(int n, string a, string b, string c) { if (n == 1) { //只有一个盘子的情况下直接将第一个塔上的盘子移动到第三个塔 printf("塔%s------>塔%s\n", a.c_str(), c.c_str()); } else { //1.先将第一个塔的n-1个盘子

汉诺塔问题python

count = 0def hanoi(n,src,mid,dst): global count if n == 1: print("{}:{}->{}".format(1,src,dst)) count += 1 else: hanoi(n-1,src,dst,mid) print("{}:{}->{}".format(n, src, dst))#第n个圆盘从第src位置移动到dst位置 count += 1 hanoi(n-1,mid,src,dst)

Java算法分析2—————几种排序&amp;汉诺塔算法

一:插入排序 /* * 插入排序 */ /* * 原序列 [12] 15 9 20 6 31 24 * 第0趟 [12 15] 9 20 6 31 24 * 第1趟 [9 12 15] 20 6 31 24 * 第2趟 [9 12 15 20] 6 31 24 * 第3趟 [6 9 12 15 20] 31 24 * n个数,一共需要多少趟?n个数,n-1趟 * 第0趟,把1位置的数,和1位置之前的数进行比较,按大小顺序排列 * 第1趟,把2位置的数,和2位置之前的数进行比较,按大小顺序排列 .

基于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') 汉诺塔问题归根结底就是一个循环问题,循环包括两大要素:循环体.循环结束条件 首

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 =