有足够数量的项目,每个学生可选5个作为候选项目,第一个序列号为1(最喜欢),最后一个为5(最不喜欢)。
求个分配算法,算法要求:如果学生的候选顺序相同,成绩好的学生优先。每个学生最后只能选一个项目,
每个项目只能被分配到一个学生。

解决方案 »

  1.   

    1. 把所有的项目放进一个ArrayList
    2. 设置一个标记位,判断该学生是否取到了项目,初始为false,把学生按成绩高低排列,遍历,先取出第一个学生(成绩最好),完后遍历其所选择的项目(按序列号从低到高排列),如果该项目在ArrayList中contains,则将该项目分配给他,同时将该项目从ArrayList中remove,标记位置为true,如果该项目不存在于ArrayList中,则取下一个序列号,循环执行刚才的操作,如果遍历完学生所选的项目后标志位依然为false,则提示该学生重新选择,该学生选择后重新执行刚才的操作
    3. 将标志位赋值为false,循环到下一个学生