本文实例讲述了Python实现的基于优先等级分配糖果问题算法。分享给大家供大家参考,具体如下:
问题:
有n个人,每个人有一定的优先等级,等级高的人要比身边等级低得人得到的多,每个人都不会分不到
思路:
可以采用两头遍历的方法,顺序遍历保证等级高的人会比左边的人多,倒序遍历可以保证等级高的人比右边的人多
下面是具体实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!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_list if __name__ = = '__main__' : print "服务器之家测试结果:" rank_list = [ 2 , 3 , 4 , 8 , 1 , 5 , 6 ] split_candy(rank_list) |
结果如下:
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/together_cz/article/details/76614801