平行志愿录取的算法

前年儿子中考后报考高中时,零志愿后是9个平行志愿(到底几个我也记不清了),零志愿是提前录取就不说了,平行志愿是按志愿顺序和分数高低逐个录取,我当时还考虑了一下,实现这个算法还挺不容易的,因为动脑筋太累也就不再考虑这个算法了。作为程序员你考虑过这个吗?或你自己考虑实现下看看。关于平行志愿是什么意思,可以自行查找。

 

又过了两年,儿子现在上高二了,明年要高考,高考上海也是平行志愿,当然提前批和后面批我们就不考虑算法了。因为还有一年了,所以上网补补课,学习下如何填报志愿,其中对于平行志愿的录取是这样介绍的:

1. 所有考生按分数从高到低排名,如果总分相等则又按科目分数的排名,总之就是准备好一个分数从高到低的名单备用。

2. 每个学校各专业组在本地的招生人数当然也定了,这个也备用。

3. 从分数最高的学生开始,查找他报的平行志愿中的第一个志愿学校(带专业组,下同),看这个学校的招生名额是否用完(第一个开始,当然是已录取0人了),如果还有可用名额,则此学生录取。

4. 上面的学生处理完毕,再取分数顺序下的一名学生,查找他的第一个平等志愿学校,看是否已招满,如果未满则录取,如果已满则查找此生的下一个平行志愿看是否招满决定是否录取。如果查询完此生填报的所有平行志愿后,全部学校都已招满,则此生落榜。

5. 同理,把分数从高到低处理所有学生。

6. 当然每名学生处理完后,可以做个判断,若所有的学校都已招满则剩下的低分学生不用再循环处理了,直接break,  都落榜了(进入下一批次环节)。

 

这个算法太完美了,复杂度也低,也容易写,还容易懂,最根本的算法逻辑是分高的学生优先,我前面就没想到过要这样处理!

 

算法之外要吐槽的是学生被大学录取之后,如果不同意专业调剂,并且其他填写此专业的学生分数比你高,本专业人数超员后,你将被退档,退档之后后面所有的平行志愿都失效了,你就完蛋了,掉夹缝里了。这个难道就不能按专业再明细化一下吗?

 

当然中考没有是否服从调剂的问题,因为大家学的是一样。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值