php試題 四人過橋問題

2021-04-16 22:25:20 字數 2088 閱讀 3139

那是乙個漆黑寂靜的夜 一家四口穿過了詛咒叢林來到了通往人類世界的無妄之橋 橋頭僅有的一盞長明燈 映照著對過橋者的警示:無妄之橋,每次最多隻可通行兩人,橋上詛咒密布,必須在此長明燈庇佑下方可通過,如果38分鐘內未能全員通過——後果自負。。

四人過橋,同一時間只能過兩人,並且必須有一人提燈,如何在38分鐘內四人均走到橋另一端.

老人,        20分鐘,

中年人,    10分鐘,

小孩,        5分鐘,

年青人,     3分鐘

如何處理???

帖**的。

窮舉所有情況。

用到了幾個函式相互遞迴。

複製php內容到剪貼簿

php**:

<?php

//建模資料

$mans 

= array(

1 => array(

'name' 

=> 

'老人'

,'time' 

=> 20,

),2 

=> array(

'name' 

=> 

'中年人'

,'time' 

=> 10,

),3 

=> array(

'name' 

=> 

'小孩'

,'time' 

=> 5,

),4 

=> array(

'name' 

=> 

'青年人'

,'time' 

=> 3,

),);

//初始未過河的人

$a = array(

1 => 1,

2,3,

4,);//初始已過河的人

$b = array();

// 2人過河

function go(

$a,$b,

$m,$serialize

=array(),

$time=0

) else 

echo 

commonlanguage

($serialize)..

$time.'

'."/r/n"

;if (

$time 

<= 

38) 

array_pop

($serialize);}

}//1人提燈回去

function 

back($a

,$b,$m

,$serialize

=array(),

$time=0

) //遍歷已過河的人,從中選擇1個人提燈回去.

function 

doback($a

,$b,$serialize

=array(),

$time=0

) }//從未過河的人中選擇2個人過河.

function 

dogo($a

,$b,$serialize

=array(),

$time=0

) }//從幾個人中選擇2個人的所有情況

function 

get2elem

($array) }

}return 

array_unique

($ra);}

//從未過河的所有人中選擇1個人的所有情況

function 

get1elem

($array

) return 

$aa;

}//自然語言翻譯

function 

commonlanguage

($serialize

) count($v

) == 

2 ? 

$r .= 

' => '

: $r

.= ' <= ';}

return $r;

}//開始窮舉

dogo($a

,$b);?>

執行結果:

38 分鐘過河的有兩種走法。 

四人過橋問題

問題描述 有a b c d四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1 2 5 10分鐘,只有一支手電,並且同時最多只能兩個人一起過橋。請問,如何安排,能夠在17分鐘內這四個人都過橋?思路 由於橋最多只能允許兩個人一起過橋,一定是過橋時間最長的兩個人一起過橋,這樣時間是最短的,同時,由於只...

四人過橋 微軟面試邏輯題

有4 個人在晚上通過一座搖搖欲墜的小橋 許多橋板已經毀壞 並且該橋每次只能讓 2個人通過 多於 2個人橋就倒榻了 過橋的人必須要用到手電筒 不然一腳踏空就沒命了 只有乙隻手電筒 4個人的行走速度不同 亞當用 1分鐘可以過橋 拉里需要2分鐘 埃奇需要5分鐘 最慢的博努需要 10分鐘 17分鐘後橋就要倒...

回溯 四人分酒問題

題目 兩瓶 8兩的酒,乙個 3兩的杯子,瓶和杯子都沒有刻度,如何將酒平均分給四個人喝?也就是每個人分 4兩酒,也沒什麼限制條件,當然,喝過的酒不能再吐出來 思路 回溯演算法,遞迴 對當前酒瓶,杯和人當前存的酒量設定為一種狀態,最初始的狀態為 880 0000 最終的狀態為 000 4444 狀態的改...