php經典演算法集錦

2022-10-06 10:00:10 字數 1618 閱讀 4491

有5個人偷了一堆蘋果,準備在第二天分贓。晚上,有一人遛出來,把所有菜果分成5份,但是多了乙個,順手把這個扔給樹上的猴了,自己先拿1/5藏了。沒想到其他四人也都是這麼想的,都如第乙個人一樣分成5份把多的那乙個扔給了猴,偷走了1/5。第二天,大家分贓,也是分成5份多乙個扔給猴了。最後一人分了乙份。問:共有多少蘋果?

for ($i = 1; ; $i++)}}

}}

}}一群猴子排成一圈,按1,2,…,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m、n, 輸出最後那個大王的編號。

function king($n, $m) else

$i++;

} return current($monkeys);

}$a = king(5, 2);

var_dump($a);

漢諾塔(又稱河內塔)問題是印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的乙個在底下,其餘乙個比乙個小,依次疊上去,廟裡的眾僧不倦地把它們乙個個地從這根棒搬到另一根棒上,規定可利用中間的一根棒作為幫助,但每次只能搬乙個,而且大的不能放在小的上面。解答結果請自己執行計算,程式見尾部。面對龐大的數字(移動圓片的次數)18446744073709551615,看來,眾僧們耗盡畢生精力也不可能完成金片的移動。

後來,這個傳說就演變為漢諾塔遊戲:

1.有三根桿子a,b,c。a桿上有若干碟子

2.每次移動一塊碟子,小的只能疊在大的上面

3.把所有碟子從a杆全部移到c桿上

經過研究發現,漢諾塔的破解很簡單,就是按照移動規則向乙個方向移動金片:

如3階漢諾塔的移動:a→c,a→b,c→b,a→c,b→a,b→c,a→c

此外,漢諾塔問題也是程式設計中的經典遞迴問題。

function hanoi($n,$x,$y,$z)else

}hanoi(3,'a','b','c');

使用php描述氣泡排序和快速排序演算法,物件可以是乙個陣列

//對陣列氣泡排序

function bubble_sort($array)

}}return $array;

}function quick_sort($array) elseif ($k < $array[$mid]ukekzjotod)else

} return -1;

}寫乙個二維陣列排序演算法函式,可以呼叫php內建函式,能夠具有通用性

function array_sort($arr, $keys, $order=0)

$keysvalue = array();

foreach($arr as $key => $val)

if($order == 0)else

reset($keysvalue);

foreach($keysvalue as $key => $vals)

$new_array = array();

foreach($keysort as $key => $val)

return $new_array;

}本文標題: php經典演算法集錦

本文位址:

經典排序演算法 集錦

經典排序演算法 這一系列重點在理解,所以例子什麼的都是最簡單的情況,難免失誤之處,多指教 大多數排序演算法都給出了每一步的狀態,以方便初學者更容易理解,通俗易懂,部分難以理解的排序演算法則給出了大量的圖示,也算是乙個特色吧 經典排序演算法 快速排序quick sort 經典排序演算法 桶排序buck...

經典排序演算法集錦

經典排序演算法 這一系列重點在理解,所以例子什麼的都是最簡單的情況,難免失誤之處,多指教 大多數排序演算法都給出了每一步的狀態,以方便初學者更容易理解,通俗易懂,部分難以理解的排序演算法則給出了大量的圖示,也算是乙個特色吧 經典排序演算法 快速排序quick sort 經典排序演算法 桶排序buck...

《演算法導論》摘記 經典演算法題集錦

分治策略 diogenes教授有n個被認為是完全相同的vlsi晶元,原則上它們是可以互相測試的。教授的測試裝置一次可測二片,當該裝置中放有兩片晶元時,每一片就對另一片作測試並報告其好壞。乙個好的晶元總是能夠報告另一片的好壞,但乙個壞的晶元的結果是不可靠的。這樣,每次測試的四種可能結果如下 a晶元報告...