python求解按等级分配糖果问题

来源:互联网 发布:足球角球数据库 编辑:程序博客网 时间:2024/06/06 02:30

问题:

有n个人,每个人有一定的优先等级,等级高的人要比身边等级低得人得到的多,每个人都不会分不到

思路:

可以采用两头遍历的方法,顺序遍历保证等级高的人会比左边的人多,倒序遍历可以保证等级高的人比右边的人多

下面是具体实现:


#!usr/bin/env python#encoding:utf-8'''__AUthor__:沂水寒城功能:分糖果'''def split_candy(rank_list):    '''    '''    length=len(rank_list)    candy_list=[1]*length    for i in range(length-1):        if rank_list[i]<rank_list[i+1]:            candy_list[i+1]=candy_list[i]+1    for i in range(length-1,0,-1):        if rank_list[i-1]>rank_list[i] and candy_list[i-1]<=candy_list[i]:            candy_list[i-1]+=candy_list[i]    print sum(candy_list)    print '优先级为:', rank_list    print '分得的糖果为:', candy_listif __name__ == '__main__':    rank_list=[2,3,4,8,1,5,6]    split_candy(rank_list)


结果如下:


16优先级为: [2, 3, 4, 8, 1, 5, 6]分得的糖果为: [1, 2, 3, 4, 1, 2, 3][Finished in 0.3s]


原创粉丝点击