题目见后文,李开复微博看到的。好久没做算法题了,
兴致
来了就尝试下。下面是我的算法思想,应该叫贪心法,求拍砖!
1).用二维表表示同学选择项目的情况,统计第位同学选择项目的数量并以降序排序;
2).用二维表存储安排结果,纵坐标表示项目,横坐标表示某时间安排的同学,初始全为0;
3).优先安排选择项目多的同学,项目相同时按自然顺序;
4).根据条件一,每位同学所有的面试都必须连续,安排的优先级最高;
5).根据条件二,若4)有多种方案时,选择使所有项目负责人的等待时间最短的方案,计算每位负责人的各时间进行比较即可,优先级次之;
6).根据条件三,尽可能早安排,优先级最低;
7).4)中的连续是相对该同学的时间,面试项目是交替且不重复的连续,类似数独中同一数字不能在同行和同列,但每列和每行都必须有;
8).按照3)的原则选择一位同学作为时间长度,再从时间0向正向搜索满足4)、5)和6),以及该时间长度的面试项目顺序,并在结果表中标记;
9).重复8)直到所有同学都安排了面试;
欢迎指正!