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

本文通过一个四人过桥问题介绍了贪心算法的应用。问题描述了四人在只有一个手电筒的情况下,如何通过一座桥,使得总时间最短。文章提供了两种解决方案,并通过比较得出最佳策略,即让最快的人来回送手电筒。此外,文章还讨论了问题的扩展,包括更多人过桥的情况,以及如何根据旅行者的过桥时间确定最优方案。
摘要由CSDN通过智能技术生成

一、问题描述

在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带 了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是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分钟)&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值