求一个VB的算法

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:30:21
有一家人,晚上要过一个独木桥。但是他们只有一盏灯,而这盏灯只能使用30秒了。要在灯熄灭前过这座桥,他们一家五口人每个人过桥的速度不同。瘦人1秒,小胖3秒,姑娘6秒,大胖8秒,瘸子12秒。 每次只能过两个人。 过去后,对岸要有一个人再把灯送回来。

求各位高手给出一个算法,

我最喜欢做算法的题了,以后有还叫我哈!
一般来说用程序写这样逻辑运算的题目都是遍历所有的情况,然后排除预期结果(比如30秒内)以外的情况。
所以算法就是:
定义一个数组Ready(1 to 5)分别为1,3,6,8,12'等待度桥
定义一个数组Passed(1 to 5)’已经度桥
定义一个遍历Time'记录度桥时间

第一次从数组Ready随机剪切2个,放到Passwed中,Time累加2人最大时间,然后从Passed中随机取1个放到Ready中,Time累加该人时间,循环到5个全到Passed数组中,这里是需要n-1次,即5-1=4次。此时用Time与30比较,如果大于30,开始下一种方案的度桥,如果小于等于30,记录度桥过程。初始化2个数组,直到遍历所有情况,打印结果。
这是此题的普遍适应思路,如果要优化算法,就是忽略直觉不可能方案减少运算次数以尽快得到答案,那就是返回时尽量选择时间短的,同行时尽量选择时间相当的。自己看吧。

第一步:瘦子和小胖先过3秒,瘦子回头1秒
第二步:大胖和瘸子12秒,小胖回头3秒
第三步:瘦子送姑娘6秒,瘦子回头1秒
第四步:瘦子接小胖共3秒
3+1+12+3+6+1+3=29秒就够了

1、瘦人和小胖过去,瘦人回来,用时4秒,总用时4秒
2、大胖和瘸子过去,小胖回来,用时15秒,总用时19秒
3、瘦人和姑娘过去,瘦人回来,用时7秒,总用时26秒
4、瘦人和小胖过去,用时3秒,总用时29秒

30秒内不可能实现的。