题解 | #牛舍安排问题#
牛舍安排问题
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