小船过河问题:最优方案及时间计算 - 算法详解
"1.题目:N个人过河,船每次只能坐两个人,船载每个人过河的所需时间不同t[i],每次过河的时间为船上的人的较慢的那个,求最快的过河时间。(船划过去要有一个人划回来) "2.解题思路:\n首先,我们可以将所有人按照过河时间从小到大排序,记为t[1], t[2], ..., t[N]。\n\n然后,我们可以考虑最快的过河方案。假设最快的过河时间为T。\n\n如果最快的两个人一起过河,那么过河时间为t[1]。\n否则,最快的人必须先过河,过河时间为t[1];\n然后最快的人返回,过河时间为t[1];\n最慢的两个人一起过河,过河时间为t[N];\n最快的人再次过河,过河时间为t[1]。\n\n所以,最快的过河时间T = t[1] + t[1] + t[N] + t[1] = 3 * t[1] + t[N]。\n\n综上所述,最快的过河时间等于3 * t[1] + t[N]。\n\n3.具体步骤:\n1) 将所有人按照过河时间从小到大排序。\n2) 计算最快的过河时间T = 3 * t[1] + t[N]。\n\n4.示例:\n假设有5个人,他们过河的时间分别为10, 5, 2, 7, 3,按照从小到大排序后的顺序为2, 3, 5, 7, 10。\n\n最快的过河时间T = 3 * 2 + 10 = 16。\n
原文地址: https://www.cveoy.top/t/topic/pK0R 著作权归作者所有。请勿转载和采集!