2022秋软工实践 第二次结对编程作业
这个作业属于哪个课程 | fzusdn社区 |
---|---|
这个作业要求在哪里 | 2022秋软工实践 第二次结对编程作业 |
这个作业的目标 | 设计一个算法,在最小化向后端发送的请求次数的同时,最大化抓出缺勤同学的数量 |
学号 | 032002530 |
结对成员学号 | 032002342 |
结对成员博客 | 美女队友链接 |
背景
栋哥对大家第一次结对编程作业的原型设计感到很满意,为了尽快让同学们使用上软件,于是栋哥花一晚上时间开发了一个点名小程序。但是在上线运行过后,发现了一些问题:
- 大多数老师习惯在每次上课后或下课前的一小段时间内进行点名。
- 如果采用全点的方式,在这段时间里,后端服务器需要处理大量的请求,拥塞导致响应速度变慢,给点名小程序带来极差的使用体验。
- 采用随机抽点的方式,能够有效减少并发量,但是无法保证点名的质量,难以有效抓出没有到教室的同学。
所以栋哥急需大家设计一个算法来解决这个问题,要求能够最小化向后端发送的请求次数,最大化抓出缺勤同学的数量。
具体要求
定义5门课程,每个课程班级人数为90人,一学期共20次课。每门课程均有5-8位同学缺席了该学期80%的课,此外每次课程均还有0-3位同学由于各种原因缺席。
参数定义:
- 请求次数:定义在一次点名中,获取一位同学是否到达课堂的情况为一次请求。
- 有效点名:一位同学缺席该课程的一次课,算法在这次课上抽点到该同学,视为一次有效点名,一次课可包含多次有效点名。
评价标准
E = 五门课程有效点名次数 总请求次数 \frac {五门课程有效点名次数}{总请求次数} 总请求次数五门课程有效点名次数
重点、难点分析
数据集的生成
该算法的输入是五门课程每门课程20次课的全部出勤情况,所以首先我们需要根据要求去生成符合实际的五门课程每门课程20次课的全部出勤情况。
同时,我们还需要考虑合理的辅助信息,如绩点、是否担任职务、历史逃课信息等,如何根据辅助信息合理地去生成