亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 6356 | 回復: 3
打印 上一主題 下一主題

誰能幫忙改一改漢諾塔問題的python 代碼 ? [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-02-11 18:57 |只看該作者 |倒序瀏覽
class hanotower:

  def __init__(self):

    self.start=[]

    self.end=[]

    self.tmp=[]

    #self.last=[]

    self.flag='N'



  def fill(self,n):

    self.start=list(range(n,0,-1))

    self.end=[]

    self.tmp=[]

    self.flag='Y'

   

  def get_state(self):

    trans=[]  

    length=max(len(self.start),len(self.tmp),len(self.end))

    def coalesce(aList,i):

      if i<0 or i>=len(aList) or len(aList)==0 :return '0'

      else:return str(aList[i])



    for i in range(length-1,-1,-1):

      seg=[coalesce(self.start,i),coalesce(self.tmp,i),coalesce(self.end,i)]

      trans=trans+[seg]



    return trans



  def print_state(self):

    print('--------------------------------------------------------')   

    for sub in self.get_state():

      print('\t'+sub[0]+'\t'+sub[1]+'\t'+sub[2])

    print('--------------------------------------------------------')   



  def move(self,k,s,d,t):

      self.print_state()

      if k==1 :

        self.print_state()  

        d.append(s.pop())

      else:

        self.print_state()  

        move(k-1,s,t,d)

        self.print_state()

        d.append(s.pop())

        self.print_state()

        move(k-1,t,d,s)

        self.print_state()

      

  def start_to_end(self):

    if self.flag=='N' :

      self.fill(5)  

    else:

      self.print_state()

      self.move(len(self.start),self.start,self.end,self.tmp)

      self.print_state()        

   

  

def main():

  h=hanotower()

  h.fill(5)

  print('begin')

  #h.print_state()

  h.start_to_end()

  print('end')

  #h.print_state()

  



if __name__=='__main__':

  main()


學習寫的漢諾塔的問題,但是得不到正確的結果 ,而且能否指點一下使 代碼具有 python 的特點。
謝謝!

論壇徽章:
0
2 [報告]
發(fā)表于 2011-02-11 22:13 |只看該作者
有點暈啊。

論壇徽章:
0
3 [報告]
發(fā)表于 2013-09-01 21:59 |只看該作者
  1.   1 #!/usr/bin/python                                                           
  2.   2
  3.   3 def hanio(x, y, z, n):
  4.   4     if n == 1:
  5.   5         print x, '->', z
  6.   6     else:
  7.   7         hanio(x, z, y, n - 1)
  8.   8         print x, '->', z
  9.   9         hanio(y, x, z, n - 1)
  10. 10
  11. 11 hanio('A', 'B', 'C', 3)
復制代碼
這是我寫的遞歸的, LZ可能寫的是非遞歸的。那個太復雜了

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
4 [報告]
發(fā)表于 2013-09-02 14:39 |只看該作者
longdeqidao 發(fā)表于 2013-09-01 14:59
這是我寫的遞歸的, LZ可能寫的是非遞歸的。那個太復雜了

有點牛啊。蠻牛。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP