这样的一个问题有没有现成的算法?该如何解?
有n个学生,每个人都有一次考试成绩。现在想把这n个学生平均分成k个班(假设n能够被
k整除),使得各个班的平均分差别最小,也就是说,使平均分最大的减去平均分最小的所
得到的差值最小。这个问题有没有什么好的算法?
[解决办法]
最笨的方法,先求出n个人的分数总合设为m,再求出n个人分为k个集合的所有可能形式,每个集合中的总分为m1...mk,人数相应的为n1...nk,可知道mi与ni要满足如下条件
即m1+m2+..+mk = m,n1+n2+..+nk=n
现在要求使平均分最大的减去平均分最小的所得到的差值最小即等价于对所有k个集合的可能形式求出 {min((m1/n1-m/n)+(m2/n2-m/n)+...+(mk/nk-m/n))}1..k
不知道有没有人理解我说的.....#-0-
当然这个算法的效率可以说是极低.......,不过我只是说一种理论上应该正确的算法
[解决办法]
具体解法已经发给你了