NYOJ-47过河问题

Posted 赤云封天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NYOJ-47过河问题相关的知识,希望对你有一定的参考价值。

这是一道经典的贪心算法的题目。首先说一下我对这道题的理解:

  n个人要过河,已知每个人的过河时间且过河时必须要使用唯一的手电筒。桥只能允许最多

两个人同时过河。让求所有人都过河后的最短时间。

  我们不难知道:必须同时两个人过河,因为要把手电筒送回来,让为过河的人过河。使用贪

心的思想解决这个问题,首先要对这n个人的过河时间排序并保存在数组S中。这也是大多数贪心

解决问题的共同点。

  根据贪心原则,我们有两个贪心策略:

  策略A: 让最快的两个人去送最慢的两个人。首先S[0]和S[1]过河,S[0]把手电筒送回来,接着

最慢的两个人S[n-1],S[n-2]拿着手电筒过河。然后S[1]把手电筒送回来。注意:次慢的这个人相当

于没有花费时间就过去了(相对于策略B来说),这一点对于理解为什么要比较两种策略的最短时间

很重要。 此时S[0],S[1]都在未过河的这一岸,然后S[0],S[1]在接着送目前最慢的两个人S[n-3],

S[n-4],以此类推。

  策略B:一直让最快的人送当前状态最慢的人。S[0]先把S[n-1],送到对岸,拿着手电筒回来,

再送S[n-2]。相当于单独一个人依次过河,再加上最快人的送手电筒的时间。

(未完持续)

以上是关于NYOJ-47过河问题的主要内容,如果未能解决你的问题,请参考以下文章

NYOJ 47

nyoj 40-公约数和公倍数(gcd)

过河问题(牛虎过河商人仆人过河农夫妖怪过河传教士野人过河)(第2届第2题)

nyoj-2359 巴什博弈?

NYOJ 815 三角形海伦公式

贪心算法—旅行者过河问题