猴子分香蕉问题(python)

# 猴子拿香蕉问题    按照输入顺序,输出猴子拿到的香蕉重量
# 思路:对香蕉由大到小排列。对猴子建类,存储id,体重,拿到的香蕉重量(part初始为0)
#       对猴子按照体重由大到小排列,在类里面自定义排序。
# 分香蕉:用i%m分,monkeys[i%m].part+=banana[i]
# 分完后,再按照id,即输入顺序由小到大重新排列,输出part
# 输入:5 3                   
#       1 2 3 4 5         输出:7 5 3
#       3 2 1

class Monkey:
    def __init__(self,id,weight,part):
        self.id=id
        self.weight=weight
        self.part=part

n,m=map(int,input().split())  # n只香蕉,m只猴子
banana=list(map(int,input().split()))  # 输入香蕉重量
monkey=list(map(int,input().split()))  # 输入猴子体重
banana.sort(reverse=True)  # 降序排列
monkeys=[]
for i in range(m):
    monkeys.append(Monkey(i+1,monkey[i],0))  # 初始化猴子列表,元素为对象。part初始化为0
monkeys.sort(key=lambda x:x.weight,reverse=True)   # 对猴子按体重降序排列
for i in range(n):  # 开始分香蕉
    monkeys[i%m].part+=banana[i]
monkeys.sort(key=lambda x:x.id)   # 分完后再次按照输入顺序编号排序
for i in range(m):
    print(monkeys[i].part,end=' ')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值