欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python遞歸實現(xiàn)漢諾塔算法示例

 更新時間:2018年03月19日 09:15:16   作者:kuqs(奇小東)  
這篇文章主要介紹了Python遞歸實現(xiàn)漢諾塔算法,結(jié)合實例形式分析了漢諾塔算法的原理、實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Python遞歸實現(xiàn)漢諾塔算法。分享給大家供大家參考,具體如下:

最近面試題,面試官讓我5分鐘實現(xiàn)漢諾塔算法(已然忘記漢諾塔是啥)。

痛定思痛,回來查了一下漢諾塔的題目和算法。題干與實現(xiàn)如下:

A基座有64個盤子,大在下小在上,每次移動一個盤子,每次都需要大在下小在上,全部移動到B基座,C基座為輔助基座。

# -*- coding:utf-8 -*-
# 漢諾塔回溯遞歸實現(xiàn)
# 假設(shè)參數(shù)中初始桿為a,借助桿為c,階段終止桿為b
# 第一步,a狀態(tài)借助b移動到c
# 第二步,a移動到b
# 第三步,c借助a移動到b
class Solution:
  def hanoi(self, n, a, b, c):
    global lishan
    if n > 0:
      Solution.hanoi(self, n-1, a, c, b)
      b.append(lishan[n-1])
      a.remove(lishan[n-1])
      Solution.hanoi(self, n-1, c, b, a)
so = Solution()
n = 3
global lishan
lishan = [x for x in xrange(n)]
A = [x for x in xrange(n)]
B = []
C = []
so.hanoi(3, A, B, C)print B

運行結(jié)果:

[2, 1, 0]

回溯遞歸,設(shè)計起來還是很有難度的(在沒有背過這個題目的前提下)

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

最新評論