请告诉我贪婪算法时间分析问题

时间:2019-10-12 01:46:51

标签: algorithm analysis correctness

假设您正在运营一家交通网络公司。假设您有M驱动程序和N 一位司机只能接一位乘客,而一位乘客只能从1位乘坐 一次的驱动程序。为了使旅途舒适,您不允许驾驶员接客 与他的教育差异超过2年。请设计算法以 最大限度地增加驾驶员和乘客的比赛次数。

1 个答案:

答案 0 :(得分:0)

算法:

您可以采取的一种贪婪方法是通过增加#年教育来对M个驾驶员和N个乘客列表进行排序。然后,您可以使用两个指针来分配对。从每个列表的开头开始,比较当前的驾驶员和乘客。如果他们的受教育程度小于等于2,则将两个配对,并同时增加两个指针。如果他们的教育水平> 2,则递增具有较低教育水平的指针并继续。一旦到达两个列表的末尾,就可以分配对了。这将分配有效的驾驶员-乘客对的最大数量。

运行时分析:

驱动程序排序:O(M log M)

乘客排序:O(N log N)

分配对:O(N + M)

运行时:O(M log M + N log N)

我希望这些信息对您有所帮助!