本文实例讲述了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