问题是:给定 4 组大小为 A、B、C 和 D 的学生,以及总共 k 个伴侣,设计一种算法,以几乎相等的比例将伴侣分配给学生。
您不能只给组 k*A/N、k*B/N、k*C/N、k*D/N 伴侣,因为伴侣的数量必须是正整数。而且你不能只是四舍五入,因为那样你可能得不到正确数量的伴侣。所以我的想法是你把小数部分扔掉,把整数部分给每个组,整数除法也是如此。那么你可能有一些剩余的伴侣,但最多3个,所以把它们分配给剩余最多的组。
然后,面试官指出这个有问题。如果您添加另一个伴侣,因此将 k 增加到 k+1,那么其中一个组实际上可能会以这种方式失去一个伴侣。她给了我一个例子,但我不记得了。
谁能想出一个避免这个问题的算法?