题目描述
有 N 个人要过河,船每次只能坐两个人,船载每个人过河所需时间 t[i] 不同,每次过河时间为船上较慢的那个人的时间,且船划过去后要有一个人把船划回来。求最快的过河时间。
贪心算法原理
- 基本思想
- 贪心算法在每一步都选择当前看起来最优的选择,希望通过一系列局部最优解得到全局最优解。对于这个问题,贪心策略是尽量让用时最短的人多往返划船来节省时间,同时合理搭配人员过河。
- 贪心策略体现
- 考虑每次过河的情况,尽量让速度快的人把速度慢的人送过去,然后速度快的人再回来,这样可以减少整体的过河时间。
贪心算法步骤
- 初始化与排序
- 将每个人过河的时间
t[i]进行排序,方便后续选择最快和最慢的人。
- 将每个人过河的时间
- 分情况计算
- 当人数
N为 1 时,直接返回该人的过河时间,因为只有一个人,直接过河即可。 - 当人数
N为 2 时,返回较慢那个人的过河时间,因为两人一起过河,时间取决于较慢的人。 - 当人数
N为 3 时,选择让最快的人分别送其他两人过河,总时间为t[0] + t[1] + t[2](其中t[0]是最快的人的时间),因为这样可以保证每次过河的时间都是相对较短的。 - 当人数
N大于 3 时:- 每次选择最快的两个人(设为
a和b,a < b)和最慢的两个人(设为y和z,y < z)。 - 第一种方案是让
a和b过河,然后a回来,y和
- 每次选择最快的两个人(设为
- 当人数

&spm=1001.2101.3001.5002&articleId=144476594&d=1&t=3&u=6e4bdf93c7b24fefb5c316e360ac7ff0)
894

被折叠的 条评论
为什么被折叠?



