php 正常的猴子選大王算法

一羣猴子排成一圈,按1,2,...,n依次編號。

然後從第1只開始數,數到第m只,把它踢出圈,

從它後面再開始數,再數到第m只,在把它踢出去...,

如此不停的進行下去,直到最後只剩下一隻猴子爲止,那隻猴子就叫做大王。

示意圖:

php代碼:

$arr = array('a','b','c','d','e','f','g','h');//示例數組
echo '<pre>The King is :<br/>';
print_r(king($arr,11));


function king($arr,$count){
	$i = 1;//從1開始
	while(count($arr) > 1){
		if($i%$count == 0){//用求餘,計算數到的位,如果求餘爲0,所數到的位消除,壓出數組中
			unset($arr[$i-1]);
		}else{//數到的位不是結束,把這一位放到數組末尾,並消掉這個位
			array_push($arr,$arr[$i-1]);
			unset($arr[$i-1]);
		}
		$i++;//轉移到下一個數組元素
	}
	return $arr;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章