【Codewars-Pyramid Slide Down】(下三角矩阵求最长路径)

在刷Codewars的时候,发现了其中有这道题,感觉大神的解法很巧妙,记录下来,希望自己以后需要的时候能快速找到吧。
【题目1】
大致就是需要找到下三角矩阵的一个最长路径吧。
【解法】
无非还是动态规划的方法,每个点只能走到该节点下方节点或者下方节点的右节点。
这里贴出大神的解法吧,自己的解法确实感觉不如别人的巧妙。

def longest_slide_down(p):
    res = p.pop()#感觉这个pop操作很是精彩,虽然可能破坏了原来的数组
    while p:
        tmp = p.pop()
        res = [tmp[i] + max(res[i],res[i+1])  for i in range(len(tmp))] 
    return res.pop()

【题目2】
寻找矩阵的最小路径。
【解法】
仿照上一个也采用pop的方法来处理矩阵。
然后采用滚动数组的方法来解决吧。

def getMin(self, mmap, n, m):#mmap为矩阵,n为行数,m为列数
        tmp = mmap.pop(0)
        res = [0]*len(tmp)
        res[0] = tmp[0]
        for i in range(1,len(tmp)):
            res[i] = tmp[i]+res[i-1]
        while mmap:
            s = mmap.pop(0)
            res[0] = res[0]+s[0]
            for i in range(1,len(s)):
                res[i] = s[i] + min(res[i],res[i-1])
        return res[-1] 

你可能感兴趣的:(python刷题)