问题:
有几个人参与抽签,决定前往哪个城市旅行。如果对自己抽到的不满意,可以私下进行交换。
他们通过问卷填写了希望交换的申请,汇总为一个excel表格。
1.做出最优方案,尽可能满足所有人的要求。
2.优先级:使每个人能换到意向的城市>意`向城市1>意.向城市2>意·向城市3
3.在无法满足所有人的要求的前提下,按照申请时间的先后顺序,优先考虑。
4.经过交换后,每个城市前往的人数不变
5.输出:序号,交换后的城市编号(或显示“保持不变”)
6.实际的城市和人数不仅限于示例表格所呈现的。
excel示例输入:
序号 | 申请时间 | 抽到城市 | 意`向城市1 | 意向.城市2 | 意·向城市3 |
---|---|---|---|---|---|
1 | 0323143000 | 1 | 2 | 3 | 4 |
2 | 0323143030 | 2 | 3 | 4 | 1 |
3 | 0323143100 | 3 | 4 | 1 | 2 |
4 | 0323143200 | 4 | 1 | 2 | 3 |
5 | 0323143300 | 1 | 3 | 2 | 4 |
6 | 0323143400 | 2 | 4 | 1 | 3 |
7 | 0323143500 | 3 | 2 | 1 | 4 |
8 | 0323143600 | 4 | 3 | 1 | 2 |
9 | 0323143700 | 1 | 2 | 4 | 3 |
10 | 0323143800 | 2 | 4 | 3 | 1 |
主要在纠结算法应该如何编写。
如果只有1个意`向城市的话,就非常容易。
但是有3个意·向城市,且要尽可能满足所有人的需求的话,存在非常多的可能性。
要求做出最佳方案的话还需要尽可能满足意向城市1的需求。
百度了一下没有类似的解决方案,目前也没有比较好的思路,希望给些建议。
如果可以的话,希望提供部分代码,谢谢!