项目分配算法

anminliu 2010-04-24 02:19:57
有足够数量的项目,每个学生可选5个作为候选项目,第一个序列号为1(最喜欢),最后一个为5(最不喜欢)。
求个分配算法,算法要求:如果学生的候选顺序相同,成绩好的学生优先。每个学生最后只能选一个项目,
每个项目只能被分配到一个学生。
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
anminliu 2010-04-24
  • 打赏
  • 举报
回复
4楼的不错
gesanri 2010-04-24
  • 打赏
  • 举报
回复
1. 把所有的项目放进一个ArrayList
2. 设置一个标记位,判断该学生是否取到了项目,初始为false,把学生按成绩高低排列,遍历,先取出第一个学生(成绩最好),完后遍历其所选择的项目(按序列号从低到高排列),如果该项目在ArrayList中contains,则将该项目分配给他,同时将该项目从ArrayList中remove,标记位置为true,如果该项目不存在于ArrayList中,则取下一个序列号,循环执行刚才的操作,如果遍历完学生所选的项目后标志位依然为false,则提示该学生重新选择,该学生选择后重新执行刚才的操作
3. 将标志位赋值为false,循环到下一个学生
eggno8 2010-04-24
  • 打赏
  • 举报
回复
每个学生最后只能选一个项目,
每个项目只能被分配到一个学生。
//===========================
如果是6个学生选择5个项目,怎么分?只有违背最差一个学生的意志了哦。
anminliu 2010-04-24
  • 打赏
  • 举报
回复
楼上的不是说了成绩优异者优先吗?假设成绩不一样
eggno8 2010-04-24
  • 打赏
  • 举报
回复
有种极端的情况没法达到要求
6个学生选择了相同的5个项目,比如一个寝室的都选择了相同的。

62,567

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告