题解 | #牛舍安排问题#

牛舍安排问题

https://www.nowcoder.com/practice/b56eb97b8b5941d3a14cd4ce7238f502

# 有深度遍历的思想在里面,这题本来可以用简单的多层for循环解决,但是由于k是动态的,需要设计动态的for循环层数来解决,这个过程中需要记住将每一层for的i记录,用完后要pop掉,还有就是需要设计全局变量用来记录最小距离的值!!!!!
#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param houses int整型一维数组 
# @param k int整型 
# @return int整型
#
class Solution:
    # dis=1000
    def __init__(self):
        self.dis=1000
        # pass
    def minTotalDistance(self , houses , k ):
        arr=[]
        Solution.dy(self,k,houses,arr)
        return self.dis
    def dy(self,n,houses,arr):
        if n==0:
            diss=0
            for i in houses:
                res=[]
                for j in arr:
                    res.append(abs(i-j))
                diss+=min(res)
            if self.dis>diss:
                self.dis=diss
            print(self.dis,arr)
            if min(arr)==max(houses):
                return diss
            # print(arr)
        else:
            for i in range(max(houses)+1):
                arr.append(i)
                Solution.dy(self,n-1,houses,arr)
                arr.pop()
        # write code here

全部评论

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务