我这里有一个场景.让我用一个小例子来解释.
我有10支钢笔,我必须给3个人.那些人的比例就像是6:6:1意味着如果我给人C给1笔,我必须给A人和B人6-6笔.
我试图通过使用我在下面描述的简单计算来解决它.
PerPersonPen = (TotalCountofPens * PerPersonRatio)/(SumofAllPersonsRatio)
Person A =(Int) (10*6)/13 = 4
Person B = (Int) (10*6)/13 = 4
Person C = (Int) (10*1)/13 = 0
在这里,人物C将获得0笔,但不应该发生.我希望那个人A& B正在获得4笔,这是正确的.但是人C也应该得到1支笔.
这种情况发生在任何人与其他人相比有1个比率计数的情况下.
任何人都可以帮我解决这个问题吗?或者我怎样才能实现它?
最佳答案
一种简单的方法是保持每个人应该获得多少笔的数量.然后,只要它们是钢笔分配,你给一个应该得到最多笔的人.
原文链接:https://www.f2er.com/python/438720.html以下是您的示例:
60/13,60/13,10/13 -> 1,0
47/13,60/13,10/13 -> 1,1,0
47/13,47/13,10/13 -> 2,1,0
34/13,47/13,10/13 -> 2,2,0
34/13,34/13,10/13 -> 3,2,0
21/13,34/13,10/13 -> 3,3,0
21/13,21/13,10/13 -> 4,3,0
8/13,21/13,10/13 -> 4,4,8/13,10/13 -> 4,4,1
8/13,-3/13 -> 5,1
更新
如果你想确保每个人在可能的情况下至少收到一支笔,那么首先给每个人一支笔,优先考虑那些需要最多笔的笔,以防每个人都没有足够的笔.然后按上述步骤操作.