根据他们的需要,公平地分发有限数量的东西

时间:2011-12-20 13:49:16

标签: logic

所以我有一组用户,他们希望获得1个项目,但是他们可以根据他们的需要排序3个愿望。 但是,所有用户都可以限制一件物品被送走的次数。最后,每个人都应该(可能)得到他最想要的项目。

我已经尝试将希望项目X的每个用户添加到“wishers”列表中,如果此列表小于可用数量,则每个人都可以获得它。问题是,如果可用的项目数量更大,这并不尊重有人喜欢的项目。

我相信可能已经有一个数学问题试图解决这个问题。

1 个答案:

答案 0 :(得分:1)

让我们说你有100个苹果,香蕉和胡萝卜

让我们说你有300个人,他们已经对他们的三个选择进行了排名。

一个简单的算法就是尝试先实现每个人的首选。所以我们说300人的首选是:150个苹果,120个香蕉,30个胡萝卜。如果可用物品的数量少于所需物品的数量,则每个人都得到一个。否则随机分发。

所以在上面的示例中,您可以完成230人的首选。

然后通过第二个(然后是第三个)选择剩余的人并重复。