1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 多人过河问题C语言贪心算法 过河问题(贪心算法)(示例代码)

多人过河问题C语言贪心算法 过河问题(贪心算法)(示例代码)

时间:2022-03-11 21:12:46

相关推荐

多人过河问题C语言贪心算法 过河问题(贪心算法)(示例代码)

一、问题描述

在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带 了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、8分钟;而如果两人同时过桥,所需要的时间就是走 得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这四人尽快过桥。

二、问题答案

这个问题本身并不太难,即使用简单的枚举法逐一尝试也能找到正确答案。

两人过桥后,需要把手电筒送来,因此最容易想到的是让那个最快的人担任来回送电筒的人。因此,这第一种办法是:先让甲乙过去(2分钟),甲回来(1分钟),甲丙过去(5分钟),甲回来(1分钟),甲丁再过去(8分钟),总共需要17分钟就可以让四个人都过去。

而正确答案是第二种方法:先让甲乙过去(2分钟),甲回来(1分钟),丙丁过去(8分钟),乙回来(2分钟),甲乙再过去(2分钟),总共需要15分钟就可以让四个人都过去。

这里的一个关键点,是让两个最慢的人同时过桥。

三、简单扩展

如果把四人所需要的时间,改变一下分别,是1、4、5、8分钟。

第一种方法:先甲乙过去(4分钟),甲回来(1分钟),甲丙过去(5分钟),甲回来(1分钟),甲丁再过去(8分钟),总共需要19分钟就可以让四个人都过去。

第二种方法:先让甲乙过去(4分钟),甲回来(1分钟),丙丁过去(8分钟)&

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。