高校大规模考试的安排方案优化.doc

上传人:scccc 文档编号:12066837 上传时间:2021-12-01 格式:DOC 页数:21 大小:898KB
返回 下载 相关 举报
高校大规模考试的安排方案优化.doc_第1页
第1页 / 共21页
高校大规模考试的安排方案优化.doc_第2页
第2页 / 共21页
高校大规模考试的安排方案优化.doc_第3页
第3页 / 共21页
高校大规模考试的安排方案优化.doc_第4页
第4页 / 共21页
高校大规模考试的安排方案优化.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《高校大规模考试的安排方案优化.doc》由会员分享,可在线阅读,更多相关《高校大规模考试的安排方案优化.doc(21页珍藏版)》请在三一文库上搜索。

1、高校大规模考试的安排方案优化摘要本文对高校大规模考试的合理安排问题进行了研究和探讨。由于高校在校学生的增多,学校在安排期终考试等大型考试时总会碰到各种难题,如,1、必须保证不会出现同一学生有两门考试时间冲突的情况;2、尽量使一个学生的各门考试间隔较为均衡;3、合理利用容量不同的考场;4、使每个监考老师的监考日程比较平均,且确保不发生某一时段监考老师 不足的现象。本文采用图论中的逆着色算法解决问题1,并设计程序根据已知的各种教室规模给出分配考场的最优方案以解决问题3。为了满足2和4,我们将讨论几种考试时间分配方案并从中得到令学生、老师以及学校都满意的最优者。为了检验模型的科学性与可行性,我们设计

2、了一个选课程序,使得可以利用计算机对大批量学生的选课情况进行模拟,以得到一个较为接近实际的选课总表。根据这份数据样本,我们检验了上述所有算法的实现情况,证明了模型的合理性。并且基于利用这份样本所做的学生和老师对考试安排的满意度分析,我们最终确定了一个考试时间分配方案,从而完整地解决了提出的问题。关键字:考试安排 逆着色算法 满意度一. 问题重述由于高校的在校学生的增多,学校在安排期终考试时总会碰到各种难题,如不能错开学生的各门课的考试时间,监考教师不足,或学生参加考试时间过于集中。这些问题在大面积课程, 如高等数学和线性代数的考试,和一些全校性的选修课的考试时非常明显。通常的做法是选修课程和必

3、修课程分开,各有一周考试时间,选修课随堂考;大面积课程另行安排-通常这样使得大面积课程的考试和其他必修课程考试同时进行,增加安排的难度。我们希望针对这些问题设计一个学生、教师和学校都满意的方案。归纳起来欲解决的问题有:1. 必须保证不会出现同一学生有两门考试时间冲突;2. 合理利用容量不同的考场;3. 安排应尽量合理,使学生、教师和学校都满意。考虑到实际的高校规模,这个建模问题只有在做到用计算机进行大样本仿真处理的情况下才算得到真正意义上的解决:手工安排显然是难以完成的。对问题3的处理情况的评估也建立在对大样本的统计分析基础上。二. 基本假设1. 选同一门课程所有学生一起参加该课程考试,不考虑

4、上课时的逻辑班级。2. 一个学校的学生选课情况足够交错复杂以致能排在同一时间的考试科目不会过多,且用作考场的教室在大面积课程错开的前提下数量充足。3. 教室有大、中、小三种规模。4. 每天至多可以安排五个时间段的考试。5. 学生选课情况已知。三. 符号说明:第门课程:监考教师的数量:大型教室可容纳的考生人数:中型教室可容纳的考生人数:小型教室可容纳的考生人数:第个考试时间段:考试总天数:学生满意度:教师满意度四. 问题分析及模型建立(一)问题分析容易看出错开各个学生的考试时间是安排方案的前提要求:存在学生考试时间冲突的考试安排方案无疑是失败的。本文通过运用图论中的着色算法确保考试无冲突,并遵循

5、时间尽量短的原则。再通过进一步调整各场考试,满足题目的其余要求。在实际情况中,考试往往是合卷进行的,即选同一门课的学生考卷是相同的,必须在同一时间进行考试。这样一来,考试安排时可以以考试科目作为其区分的唯一标识。学校考试中存在全年级大部分学生都修读的大面积课程例如大学英语、微积分等。这些课程,一个学生往往会同时选择,而且选择人数众多,造成安排考试过程中的种种困难:比如,教室的安排。教室是考试安排中的一种重要资源,即使没有任何冲突,一门考试课程也可能会因为没有足够的教室而无法安排在某一指定时间。这里为了简化而不考虑上述情况,即,我们认为只要大面积考试不同时出现,就有足够的教室用于安排同一时间的所

6、有考试。这是基于假设2“一个学校的学生选课情况足够交错复杂以致能排在同一时间的考试科目不会过多”的。并且考虑到现在许多大学大规模的校区教学楼总有足够的备用教室和自习教室,我们认为这样简化是合乎情理的。在计算机仿真检验中,我们发现对于大面积课程,程序必然安排给它较多的大型教室,故我们给大型教室数目加了上限20,这对整个模型没有太大影响。按通常情况,每场考试持续两个小时,我们假设每天至多可以安排五场考试,即,上午两场,下午两场以及晚上一场。为使问题明确,我们对几个要求的理解如下:Ø 对教师充足的理解:即,在同一时间进行的考试每个考场必须有两名教师监考且任何教师不能同时监考两个考场。在此基

7、础上,每个老师尽量监考他所教授的科目。Ø 对教室分配合理的理解:在安排每门考试时,以占用教室数最少为原则;在此基础上,使对于每间考场,空置的位置最少。Ø 对方案使学生满意的定义:1、 对每个学生,相邻考试考试间隔尽量均匀。2、 学生一般是希望能尽快结束考试的。为了做到这一点,我们在决定考试日程方案时总是考虑把考生更多的时间段放在前面。Ø 对方案使教师满意的定义:1、 对于每个老师,监考的场次需大致相同;2、 因为老师需要休息,对于每个老师,尽量不出现连续监考的情况,监考安排也需尽量均匀。Ø 对方案使学校满意的定义:1、 使考试持续的总时间尽量短;2、设计

8、的安排方案应该简便易行,不致过于繁复,难以实现。综合考虑,最终对于监考方案的确定分四个过程:1. 将所有参加考试的科目分在不同时间段,保证每个学生不会遇到在同一时间段考两门的情况,并且尽量使总持续时间最少。2. 为各门考试安排教室。保证在同一时间段的各个考场都能有两名监考老师,同时考虑教室的合理利用。3. 分配各门考试的时间。根据每天至多可以安排五场考试的假设将所有科目分配到天,并遵循尽量使学生满意的原则。4. 为各个教师分配监考场次。每个老师尽量监考他所教授的科目,并满足使老师满意的条件。(二)模型设计1. 分配各门考试的时间。1) 步骤1首先,为了保证考试的总持续时间最少,我们将第一个步骤

9、归化为如下问题:某学校有门课程需要进行期末考试安排,同一个学生在同一时间只能参加一门考试,求该校期末考试最少需要安排多少场次的考试。(问题1) 我们将看到这与下面的问题是等价的。下面(1)(3)引自参考资料1。(1)图节点着色问题1 图节点着色问题定义图的着色问题图G的一个图节点着色是指k种颜色1,2,.,k对于G的各节点的一个分配,使得任意两个相邻的节点分配以不同的颜色。而G的色数是指图G节点的着色数k的最小值。2 图节点着色问题的变换定义互补图:图G (V,E1),E为边的全集(任意两个属于V的节点之间都有对应边所构成的边的全体),则称图H(V,EE1)为图G(V,E1)的互补图。定义图的

10、逆着色:图G的一个逆着色是指k种颜色1,2,.,k对于G节点的一个分配,使得一种颜色的任意两个节点都相邻。而G的逆色数是指G逆着色数k的最小值。定理:图G的互补图H的逆色数等于图G的色数。证明:假设图G的色数 ,用k种颜色对图G进行一次实例着色,然后把图G转换为互补图H,根据定义可知这个实例着色也是图G互补图H 的逆着色的一个实例,所以,同理可证明,所以。根据定理,图节点的着色问题可以变换为求互补图的逆着色问题从而得到解决。(2)问题1转化为图节点着色问题问题1可转化为一个图节点着色问题:G = (V,E),其中V(G) = C1,C2.,Cn,每一条边CiCj(CiCjE)的两个端点Ci和C

11、j表示某一位同学的两门考试课程。于是考试能够安排的最少场次等于图G的色数。由于相邻节点着不同色,保证了不会出现考试时间冲突。构建简单无向图H = (V,E),其中H(V) = D1,D2.,Dn,每一条边DiDj(DiDjE)的两个端点Di和Dj表示这两门课程可以安排在同一场次考试。于是考试最少需要安排的场次等于图H的逆色数。显然图H是上述图G的互补图,根据定理,对求解图G色数和求解图H逆色数的结果是一样的。图1:假设有A、B、C、D、E、F六门课,相连的两门(如A和E)表示至少一位同学这两门考试课程都要考。图3:图2的逆着色。解为:AB可同时考,DE可同时考,CF可同时考图2. 图1的补图(

12、3)逆着色问题的解决算法由考试安排问题按节点逆着色构建的简单无向图,其节点的度数反映了对应科目和其它科目组合到一起的难易程度。不同的考试科目对应节点的度数是不均匀分布的。根据这个特点我们采用如下算法步骤。1 遍历图,找出度数大于零且度数最小的节点X。2 图是否有边存在,没有则算法结束。3 节点X是否与其它节点相邻,没有则转。4 找出和节点X相邻的度数最小的节点Y。5 合并节点X和Y。6 刷新图后转。算法结束后图中的节点数就是图的逆着色数。需要说明的是,该算法不能保证得到最优解:我们得到的逆着色数不一定是最少的,但该算法较为简洁有效。算法的有效性见第五部分模型检验。(4)针对其他要求及程序实现的

13、一些问题的说明1 用程序实现算法(3)时必须注意的是合并节点X和Y的过程。我们注意到,该算法中的“节点”不一定是一个点;它可能是一个K阶完全图,K 1(经过合并后认为是一个点了)。节点在这里定义为完全图和单一的点的并集。步骤、中的“相邻”实际指的是节点X与节点Y中任意两个单一点之间都有边相连。这时,X与Y一起构成一个更高阶的完全图,从而可以合并为一个新节点。这时该算法的正确性不难加以说明:以上过程可以保证每个节点中任意两个单一点间都有边相连,因此可以着同色。最后的节点数就是图的逆着色数。2 由于我们只是假设用作考场的教室在大面积课程错开的前提下数量充足,故图G中任意两门大面积课程间必须人为地以

14、边相连,否则如果出现同时举办大面积考试则教室可能会不够用。3 实现算法的程序中,我们用零一矩阵(对称阵)表示图。有边连接的两点在矩阵中对应位置为1,否则为0。4 在输入一组学生选课表(包括总课程数和每个学生选择的课程表列)时,根据该算法可以将所有科目不相交地分划在若干个时间段内。对于确定的输入这种分划是唯一的。这样,我们就确定了需要多少个时间段完成考试,以及每一个时间段包括哪些考试。2) 步骤2我们还需要考虑的是:对于安排在一个时间段内的所有考试,是否有足够的教师来进行监考。如果上一步给出的某时间段内同时开考的科目占用教室过多以致监考教师人数不足,则须对将这一时间段的考试拆分在两个时间段中。因

15、为教室安排时遵循的原则是使每门考试占用的教室数目尽量少,所以,第门课程考试需要教室的数量可以由第门课程的选修学生数除以大型教室可容纳的考生人数后向上取整直接求得,即, (1)每个教室安排两名监考教师,则同一时间的考试科目(假设为)必须满足以下不等式: (2)其中为监考教师总人数。对每一组考试,用不等式(2)进行检验,若不满足,则将其拆分为总参加考试人数近似相等的两组。(在后面的检验中发现,这种情况很少出现)。这样,考试全部进行完所需时间段的数目也就确定了。2. 为各门考试安排教室下面我们针对一个考试时间段内一门考试科目进行教室安排方案的说明,其他的每个考试科目安排方法是相同的。算法的目标是实现

16、对于课程,安排最少的教室,并且在此前提下使考场中空置的位置最少,即合理利用。由前述,假定教室有大、中、小三种规模;对于每门考试,所需教室数不会太多,可行分配方案的总数是有限的。这里采用在初步估算上限后枚举的方法,求得最佳教室组合。具体描述如下:、分别估算大、中、小教室需求的上限。如对于大教室, + 1。、对大、中、小教室数量组合在上限内进行枚举。、如果某一种组合产生的教室容量超过参加考试总人数,并比上次产生的最优结果教室总容量少,那么就用这个组合更新最优解。3. 分配各门考试时间因为假设每天五个考试时间段,易得考试持续天数: (3)将各个时间段考试组分配到天当中去。分配时应该遵循的原则有:1、

17、 每天安排5个时间段,每一个时间段都应安排考试,不留空白。这是为了使总持续时间最短。(学校满意.2)2、 在安排考试时间段先后顺序时,应考虑该时间段内参加考试的考生总数;在一定条件下使考生多的时间段提前考。这是为了使更多的学生先结束所有考试。(学生满意.1)3、 说明:近似认为一天当中的5个时间段间隔均匀,而第一天的最后一次与第二天的第一次考试时间间隔是一天之内两次考试间隔的4倍。这是因为,从早8:00进行第一门到晚20:00一天考试结束,中间经历12小时;从20:00到第二天早8:00又是12小时,相当于一天内5次考试的总间隔。用时间点描述:如果第一天5门考试安排的时间点为1、2、3、4、5

18、,则根据以上说明,第二天5门考试的时间点为9、10、11、12、13。这些约定将在评估教师和学生的满意度中得到应用。我们设计了如下几种方案,并将在第五部分“模型检验”中确定最佳者。(1)、先考大面积课程,再考其余课程这是题目原文中提出的一种安排方案,即在前几天中集中考完所有大面积课程,剩下课程按规模从大到小往后排。在我们的假设中,大面积课程都是单独占用一个时间段的。其余的时间段可能包含多门课程,按上述原则1、2安排。(2)、先考大容量时间段,再考小容量时间段即将所有时间段按其包含的考生总数由多到少排序,再按此顺序排满整个日程表。(3)、大小容量时间段交替安排即将所有时间段按其包含的考生总数由多

19、到少排序成,然后按顺序排列,达到交替安排。这样做是考虑可能会使学生的考试间隔较为均衡。(学生满意.2)(4)、先考大面积课程,再考其余课程,横向分配这里解释横向分配的概念如下:19172533210182634311192735412202836513212937上表所示数字为5天的考试日程中所有安排考试的时间点。那么,顺序分配是将考试时间段依次安排到时间点1、2、3、4、5、9、10上;横向分配则是将考试时间段依次安排到时间点1、9、17、25、33、2上。本分配方案即先将大面积课程按容量自多至少进行横向分配,然后将其余时间段按容量多少横向分配。进行横向分配,是为了使大容量时间段和小容量时间

20、段分配较为均衡。(5)、先考大容量课程,再考小容量课程,横向分配即,将即将所有时间段按其包含的考生总数由多到少排序后进行横向分配,排满整个日程表。至此,各门考试科目的教室安排和时间安排都已经确定。4. 为各个教师分配监考场次前面已经保证每个时间段上监考老师数是足够的。分配时依据的算法描述如下:、每个老师的已监考次数初始化为0。、对每一个老师,考察他所教授的课程是否还有考场需要监考。如果有,就将他分配在此考场,并将其已监考次数加1。如果没有,则转入下一位老师,做同样处理,直至所有老师考察过一遍。、将所有老师按已监考次数自少至多排序。、按上述顺序将老师依次分配入考试日程中仍需监考的考场,以保证每个

21、老师监考场次接近(老师满意.1)至此安排考试的全过程叙述完毕。五. 模型求解及模型检验(一)模型使用的案例的获得为了更好地检验模型是否有效、可行,首先需要一个接近实际的待安排案例。真实的学生选课情况难以获得,但可以使用计算机模拟生成。我们考虑生成一份4800个学生的选课情况样本。为简化问题,做出如下约定: 1 4800个学生分布在15个学院中。每个学院人数各不相同,构成一个以250为首项,10为公差的等差数列。2 所有学生必须从10门大面积课程中选修1-5门,且同一学院的学生所修大面积课程是相同的。3 每个学院的学生都有专业必修课程2门,且不同学院的专业必修课各不相同。4 每个学生从8门院系选

22、修课程中选修1-2门,且不同学院具有的院选课各不相同5 每个学生从140门公共选修课程中选修1-2门。6 根据上述说明,可选课程总数是300门,它们都将在期末进行考试。另外的约定包括:1 大型教室可容纳的考生人数为110。 2 中型教室可容纳的考生人数为70。3 小型教室可容纳的考生人数为50。运行程序,所得的案例如下所示(部分):程序生成的学生的选课情况(部分)3 10 2 9 11 12 13 265 290 3 10 2 9 11 12 14 13 210 177 1 3 2 10 21 22 25 178 244 1 3 2 10 21 22 27 25 214 271 1 3 2 1

23、0 21 22 29 30 217 186 数字代表所选课程编号。按照上述约定,110表示大面积课程,161300表示公共选修课,其余的是院系选修和院系必修课,每个学院的各不相同。(二)考试分段及教室分配后的结果运行图逆着色算法程序和教室分配程序之后,将300门待考科目分入40个时间段,并对每一门考试按最合理的方案分配考场。分入40个时间段说明8天时间就可以安排完所有考试,这与现实情况中许多高校安排“考试周”的事实是一致的。程序运行后给出的部分结果如下:考试的时间段组合及教室分配(部分) 1314large: 3middle: 0small: 1713large: 3middle: 0smal

24、l: 0313large: 2middle: 0small: 1213large: 2middle: 0small: 1291524large: 3middle: 1small: 01124large: 2middle: 2small: 0 (注:第28和第29时间段的部分考试。每行依次为:课程编号、总需教室数、大、中、小教室数)对于这个样本得到的完整的考试分段情况见下页表。Group 表示分段序号,其顺序没有意义。表格内所列各数字表示安排在这一时间段内进行考试的所有科目编号。按照我们的约定,编号的范围是1300。Group1Group2Group3Group4Group5Group6Grou

25、p7Group8Group9Group10199 264254 6756 140128 8319 3323 4529029619220525928922721728227617523228829921420119527527426628618325829222526819126721124116729419718626219818425624027824229126118220614948388030257168178252293279263298170238188181277243213287234237173224244228247250Group11Group12Group13Group

26、14Group15Group16Group17Group18Group19Group20233 160119 10599 144129 7060 14139 7837 2950231209265189176246281223187222185235226271219190285221216270273236171248284251220180280249163196215179283260203253297245212255177165904313429516916616120419320223921026974174200272207229300Group21Group22Group23Gr

27、oup24Group25Group26Group27Group28Group29Group301622301641722182081941591201101001501308969592013879402849158118109981481278868581813777392747157117108971471268766571713676362646156116107961461258665551613575352544155115106951451248564541513373342442154114104941431238463531313272322241153113103931421

28、2282625212131713121152112102921411218161511115111110191Group31Group32Group33Group34Group35Group36Group37Group38Group39Group4010987654321(三)考试安排各方案的实现在模型建立部分我们给出了五种将各个考试时间段安排到天的方案。下面的图表描述了按照不同方案考试人数随时间的变化规律。 图中横轴表示按时间先后安排的考试场次(共计40场),纵轴表示在本时间段内参加考试的考生总数。(1)、先考大面积课程,再考其余课程前10个时间段安排的是10门大面积课程;后面自多至少安排其

29、余时间段的考试。(2)、先考大容量时间段,再考小容量时间段(3)、大小容量时间段交替安排(4)、先考大面积课程,再考其余课程,横向分配(5)、先考大容量课程,再考小容量课程,横向分配 (四)监考教师安排在模型中,我们假设每门课监考教师的人数与该课的总选修学生数正相关。为了使监考教师数尽量少以检验模型的有效性,还做出以下假设:参加监考的老师中,一部分是教授大面积课程的,另一部分是教授院系选修或必修课程的;若一门大面积课程总学生数是,则该科教师参加监考的人数是。若一门院系课程总学生数是,则该科教师参加监考的人数是。根据以上两条假定确定监考教师的总人数及其组成,并按模型中指明的算法为每个教师分配监考

30、场次。运行程序得到的教师监考安排如下所示 (部分): 175135193552185135193552195551935522055519355221555193452 (注:其中每行第一个数为教师编号;第二个数为其监考次数;后面的数是有他参加监考的时间点。具体是什么科目并未显示)(五)最终安排方案的确定为了对以上五种安排方案给出评估,需要对每种方案下学生和老师的满意程度进行定量的计算和分析。对于学生,参照对“学生满意”的定义,第一条已保证满足,只需考虑考试安排均匀程度这一个因素的影响。假设满意度与均匀程度线性相关。考试安排的均匀程度由相邻考试间隔的方差表示,其数值越大,均匀程度越低。进而,学

31、生满意度可以由方差的倒数表示,其数值越大,满意度越高。例如某个学生共有顺序排列的n门考试,则可计算每连续两门考试之间的间隔(指时间段,用考试对应的时间点的差值表示,为一非负整数)为。则对于这个学生,他的考试安排均匀程度 该学生的满意度为根据我们的样本进行计算发现这个的值太小(量级),因此采用作为满意度的计算结果。 我们用所有学生满意度的均值作为评价每种方案优劣的指标之一。对于教师,情况是完全类似的。参照对“教师满意”的定义,我们用教师监考的连续两场考试之间时间间隔的方差倒数的十倍表征这个教师的满意程度,用所有教师满意度的均值作为评价每种方案优劣的指标之一。基于以上讨论我们可以对五种安排考试的方

32、案进行评估了。计算得对于每种方案,学生与教师的满意度如下表所示:教师满意度学生满意度方案10.15860.3306方案20.08590.2857方案30.25220.3764方案40.06590.4593方案50.1670.529为更直观地说明情况,以直方图表示如下: 可以看出不同安排方案造成了满意度的显著差异。综合看来,方案5(先考大容量课程,再考小容量课程,横向分配)是使学生和老师最满意的安排方案:学生满意度居各种方案之首,教师满意度居第二。六. 模型评价与改进安排考试方案是一个较为复杂的问题。我们建立的模型将这个问题进行拆分并各个击破,使用计算机模拟验证了模型的有效性,并通过试验提出了较

33、为合理的方案。关于这个模型的改进:1、考察我们使用的4800名学生的选课样本,从规模和选课的结构上看,它更接近于高校某一个年级的选课情况,而不是高校的全部学生。因为高校不同年级的选课结构,如大面积课程的选修数、院系必修和选修课程数等都存在一定差异,如果考虑进来将帮助我们得到更加精确的模型,为我们设计选课方案提供更为可信的资料。2、通过观察几种考试安排方案的时间-容量曲线,比照其优劣排名,发现一个规律:曲线的震荡程度影响学生和教师的满意度;震荡频率增大时教师的满意度提高,振幅接近稳定时学生的满意度提高。这为提出更好的方案提供了思路:如果将这种震荡细化到每天,可能会提出令教师和学生更为满意的方案。

34、但根据对“学校满意”定义的第二条,过分追求满意度可能会使方案过于繁复而难以实现。现有方案的操作原则是较为简明,易于实现的。3、我们采用图的逆着色算法解决考试能否安排在同一时间点的问题,实际上有更为优越的算法可以用在这里,如“蚁群算法”等,但是要复杂得多。如果尝试使用这些算法,可能会得到更好的结果。参考书目参考文献:1 常蓬浩,王晓兰,艾莉,康艳萍,图节点着色问题的变换及算法,甘肃科技,第22巷第l1期:143-144,20061 张华,王秀坤,孙焘,蚁群算法在考试安排中的应用,计算机工程与设计,第24卷第12期:62-64,20032 陈越,一个通用型学分制系统考试自动编排系统的设计,苏州大学

35、学报,第19卷第2期:66-69,20033 Mark Allen Weiss,数据结构与算法分析,北京:机械工业出版社,2004.1附录: 附1:随机生成学生选课样本程序int main() srand(unsigned)time(NULL); for(i = 0; i < college; i+) col_sel(i); choose(1, foundamental, num_gonggong); for(j = 0; j < num_gonggong; j+) if(tempj != 0) stu_courj = tempj;/*公共课*/ else stu_courj =

36、0; for(j = 0; j < num_bixiu; j+) stu_courj + num_gonggong = college_selectj;/*院必修课*/ for(k = 0; k < col_numi; k+) first = college_selectnum_bixiu; last = college_selectcollege_course - 1; choose(first, last, num_yuanxuan); for(j = num_gonggong + num_bixiu; j < num_gonggong + num_bixiu + num

37、_yuanxuan; j+) if(tempj - num_gonggong - num_bixiu != 0) stu_courj = tempj - num_gonggong - num_bixiu;/*院选修课*/ else stu_courj = 0; first = foundamental + college * college_course + 1; last = courses; choose(first, last, num_gongxuan); for(j = num_gonggong + num_bixiu + num_yuanxuan; j < course_ma

38、x; j +) if(tempj - (num_gonggong + num_bixiu + num_yuanxuan) != 0) stu_courj = tempj - (num_gonggong + num_bixiu + num_yuanxuan); else stu_courj = 0; /*公选课*/ for(j = 0; j < course_max; j+) if(stu_courj != 0) course_constu_courj+; fprintf(fpo,"%d ", stu_courj); fprintf(fpo,"0n"

39、); 附2:教室按容量分配程序cla* get_assigned (int stu_num) cla *head = new cla;head->capacity = head->large = head->mid = head->small = 0;head->cla_num = 0;cla * p = 0;int cap_now = 0;int l_max = 0, m_max = 0, s_max = 0;int l = 0, m = 0, s = -1;l_max = stu_num / l_cap + 1;m_max = stu_num / m_cap

40、+ 1;s_max = stu_num / s_cap + 1;while (s < s_max) m = -1;s+;while (m < m_max) l = -1;m+;while (l < l_max && l < 20) l+;cap_now = total_cap(l, m, s);if (head->capacity !=0) if (cap_now < stu_num | cap_now > head->capacity | head->cla_num < (l + m + s) continue;if

41、 (head->cla_num = (l + m + s) && head ->capacity < cap_now) continue;else head ->capacity = cap_now;head ->large = l;head ->mid = m;head ->small = s;head ->cla_num = l + m + s;else if(cap_now >= stu_num) head ->capacity = cap_now;head ->large = l;head ->mid = m;head ->small = s;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1