题目:在一个夜黑风高的晚上,有n(n <= 50)个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不大于两人通过,他们只有一个手电筒,所以每次过桥的两个人需要把手电筒带回来,i号小朋友过桥的时间为T[i],两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。
解题思路:
方案一、耗时最少的人作为传递,即使用贪心法:每次都由耗时最少的人陪同过河,同时将电筒返回
T(n) = T(n-1)+cost[n] + cost[1]
方案二、耗时最少的两人作为传递:目的将耗时最大两人先送到对岸
T(n) = T(n-2)+cost[n] + cost[1]+2cost[2]
过程:
由此可知:
问题T(n)可以分解为T(n-1)和T(n-2)的子问题,然后求这两个子问题中的最优解则为T(n)的最优解:
解决方案:
获取输入值并进行排序处理: