1、学生班级分配
各个专业都有一个录取的学生人数m,然后是学校要求这个专业的班级数n,我们将每个班级最少需要分配的人数(这是我的一个朋友给我的提示) h求出为m/n,然后将学生人数于班级数的余数j求出,再将这j个人分别分配到j个班级中,这样班级分配就完成了。
2、寝室分配
说明:我想将相同班级的人尽可能的分配到一个寝室里
设每个班级的人数为m,每个班级需要分配的寝室数为n(这个寝室数是要求每个寝室都要住满人,多余的人将其存到数组中),每个寝室最多能过住的人数为a
首先,我需要两个数组b[x],c[x];我将每个班级需要分配的寝室数n=m/a,并将这个班级余下来的人数存到数组b[x]中,依次为其他班级的学生分配寝室;分完后,我就要分配每个班级多出来的学生:
<1>寻找数组中的最大值和最小值,并将最的值与数组总的最小值组合起来为s;
<2>首先判断这个两个数组中有几个元素,如果只有两个元素,则将其相加s,如果s>寝室的最多人数,则将多余的人数分配到另一个寝室中;如果数组中的元素大于两个,则进行第<3>步
<3>如果s的值<寝室的最大人数,则将这个值重新放入数组中;如果s的值大于寝室的最大人数,则将那个最大值放到数组c[x]中,并讲这个数从数组b[x]中除去,然后执行第<1>步