zoukankan      html  css  js  c++  java
  • 【python】hanio【汉诺塔】

    def hanoi(n,x,y,z):
        if n==1:
            print(x,'-->',z)
        else:
            hanoi(n-1,x,z,y)#将n-1个盘子从x移动到y
            print(x,'-->',z)#将最后一个盘子从x移动到z上
            hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
    
    n=int(input('请输入汉诺塔的层数:
    '))
    hanoi(n,'x','y','z')
            
    

      

    def hanoi(n,x,y,z):
        if n==1:
            print(x,'-->',z)
            tmp=x[len(x)-1]
            x.remove(tmp)
            z.append(tmp)
            print(x)
            print(y)
            print(z)
        else:
            #-----------------------------------------------
            hanoi(n-1,x,z,y)#将n-1个盘子从x移动到y
            #-----------------------------------------------
            print(x,'-->',z)#将最后一个盘子从x移动到z上
            if len(x)>1:
                tmp=x[len(x)-1]
                #print(tmp)
                x.remove(tmp)
                z.append(tmp)
                print(x)
                print(y)
                print(z)
                print("======>")
            #-----------------------------------------------
            hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
    
    def getInitList(n):
        mylist=[]
        for i in range(n):
            mylist.append(i+1)
        mylist.reverse()
        return mylist
        
    n=int(input('请输入汉诺塔的层数:
    '))
    xlistInit=getInitList(n)
    xlist=xlistInit[:]
    xlist.insert(0,'x')
    ylist=['y']
    zlist=['z']
    hanoi(n,xlist,ylist,zlist)
            
    

      

  • 相关阅读:
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    Oracle分析函数-排序排列(rank、dense_rank、row_number、ntile)
  • 原文地址:https://www.cnblogs.com/vmkash/p/8098807.html
Copyright © 2011-2022 走看看