题解 | #汉诺塔问题#

汉诺塔问题

https://www.nowcoder.com/practice/7d6cab7d435048c4b05251bf44e9f185

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param n int整型 
# @return string字符串一维数组
#

class Solution:
    
    def mid_to_right(self, n):
        stage_log = []
        if n-1 > 0:
            stage_log.extend(self.mid_to_left(n-1))         
        stage_log.append("move from mid to right")
        if n-1 > 0:
            stage_log.extend(self.left_to_right(n-1))          
        return stage_log

    def mid_to_left(self, n):
        stage_log = []
        if n-1 > 0:
            stage_log.extend(self.mid_to_right(n-1))      
        stage_log.append("move from mid to left")
        if n-1 > 0:
            stage_log.extend(self.right_to_left(n-1))       
        return stage_log
    
    def right_to_left(self, n):
        stage_log = []
        if n-1 > 0:
            stage_log.extend(self.right_to_mid(n-1))        
        stage_log.append("move from right to left")
        if n-1 > 0:
            stage_log.extend(self.mid_to_left(n-1))        
        return stage_log
    
    def right_to_mid(self, n):
        stage_log = []
        if n-1 > 0:
            stage_log.extend(self.right_to_left(n-1))    
        stage_log.append("move from right to mid")
        if n-1 > 0:
            stage_log.extend(self.left_to_mid(n-1))     
        return stage_log

    def left_to_right(self, n):
        stage_log = []
        if n-1 > 0:
            stage_log.extend(self.left_to_mid(n-1))
        stage_log.append("move from left to right")
        if n-1 > 0:
            stage_log.extend(self.mid_to_right(n-1))
        return stage_log

    def left_to_mid(self, n):
        stage_log = []
        if n-1 > 0:
            stage_log.extend(self.left_to_right(n-1))
        stage_log.append("move from left to mid")
        if n-1 > 0:
            stage_log.extend(self.right_to_mid(n-1))
        return stage_log

    def getSolution(self, n):
        if n > 1:
            stage_log =  self.left_to_right(n)
            return stage_log
        else:
            return ["move from left to right"]

全部评论

相关推荐

被加薪的哈里很优秀:应该继续招人,不会给你留岗位的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务