首页 > 其他 > 详细

leetcode-1478-安排邮筒

时间:2020-06-17 20:50:16      阅读:66      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 方法:动态规划

class Solution:
    def minDistance(self, houses: List[int], k: int) -> int:
        houses.sort()
        n = len(houses)
        cost = [[0]*n for _ in range(n)]
        for i in range(n):
            for j in range(i+1, n):
                mid = houses[(i+j)//2]
                for l in range(i, j+1):
                    cost[i][j] += abs(mid - houses[l]) 
        dp = [[float(inf)]*k for _ in range(n)]
        for i in range(n):
            for l in range(k):
                if l == 0:
                    dp[i][l] = cost[0][i]
                elif l >= i: 
                    dp[i][l] = 0
                else:
                    dp[i][l] = min(dp[j][l-1] + cost[j+1][i] for j in range(i))
        return dp[-1][-1

 

leetcode-1478-安排邮筒

原文:https://www.cnblogs.com/oldby/p/13154281.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!