一组数分成两组,差的绝对值最小。

一组数分成两组,差的绝对值最小。

这个问题是前段时间面试完美的时候被问到的。 当时没答出来,后来一直在想这个问题。 在游戏中,这个问题可以用在随机战场分组上面。 根据每个角色的装备,等级,职业等等属性,计算每个角色的“战斗力”, 并找出实力最近的两组。

今天吃饭的时候无意中又想起这个问题,并试想了一下问题的答案:

首先,将每个玩家的战斗力从大到小排序,记为Pi (i = [1,n]), 然后将P1放到A组。 此时A组和B组的差距是P1。

为了弥补两组的差距,将剩下的P2--Pm个玩家放到B组,直到B组的总和大于或等于A组,如此循环往复,直到某一组人数满,将剩余的人添加到人数不满的一组,就能得到战斗力总和相差最小的两组人。

 

转载于:https://www.cnblogs.com/glshader/p/3537252.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值