算法入门(3)奶牛枚举

描述

农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000,000,000).

但是,John的C (2 <= C <= N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢?

输入
N 一个列表 存着 隔间编号 N长度大于等于2小于100000
C 牛的头数 大于等于2小于N
输出
3

def farmer_cattle(N,C):
    N.sort()
    print(N)
    distance = int(N[-1]/C)+1

    num = 1
    for x in range(distance,0,-1):
        distance = x
        location = N[0]
        for j in range(1,len(N)):
            if (N[j]- (location+distance))>=0:
                location = N[j]
                num+=1
                if num == C:
                    print("牛放完了,最大最近距离{}".format(distance))

                    return True
    return False

if __name__ == "__main__":
    cattle_list = [1,2,8,4,9]
    c= 3
    if len(cattle_list)<=100000 and len(cattle_list)>=2 and c>=2 and c<=len(cattle_list):
        print(farmer_cattle(cattle_list,c))

你可能感兴趣的:(算法入门(3)奶牛枚举)