一个算法问题。
考虑将小班划分为大班的问题。
现在某大学某专业一个年级有 n 个小班,各班人数依次为 {x1,x2,x3,,,,,xn}。现在要求大班的人数大致为 Y ,问最好的解决方案是将这 n 个小班分为几个大班?如何分配?
我现在的解法是求出各个小班的平均人数 x ,再解出最少大班数:minCY = n * x / Y;
再求出剩余没有规类的人数,将它们模拟分配到之前的大班中,看每个大班会因此增加几个人:
perC = (n * x % y) / minCY;
再假定一个“大班允许增加人数比率” P ,假设当 perC / Y 大于 P 时则还需要增加一个大班,若小于 P 则不需要增加大班。
但是这样解存在一个问题,当 perC / Y 小于 P 时,说明剩余的人应该被插入到已经分配好的大班中去,这样与大学中的实际调度发生了矛盾,比如,一个班应该有一个课表,这样会导致该课表可能不再适合于此班的多数人。