PHP基于遞歸實(shí)現(xiàn)的約瑟夫環(huán)算法示例
本文實(shí)例講述了PHP基于遞歸實(shí)現(xiàn)的約瑟夫環(huán)算法。分享給大家供大家參考,具體如下:
約瑟夫環(huán)問題: 39 個(gè)猶太人與Josephus及他的朋友躲到一個(gè)洞中,39個(gè)猶太人決定寧愿死也不要被敵人抓。于是決定了自殺方式,41個(gè)人排成一個(gè)圓圈,由第1個(gè)人開始報(bào)數(shù),每報(bào)數(shù)到第3人該人就必須自殺。然后下一個(gè)重新報(bào)數(shù),直到所有人都自殺身亡為止。然而Josephus 和他的朋友并不想遵從,Josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個(gè)與第31個(gè)位置,于是逃過了這場死亡游戲。
<?php
$num = 41;
$step = 3;
function joseph($arr, $step, $start, $survivors)
{
foreach($arr as $k => $v)
{
if($start % $step === 0)
{
unset($arr[$k]);
$start = 1;
}
else
{
$start ++;
}
}
if(count($arr) > $survivors)
return joseph($arr, $step, $start, $survivors);
else
return $arr;
}
$i = 0;
$arr = [];
while($i ++ < $num){
$arr[] = $i;
}
$arr = joseph($arr, 3, 1, 2);
print_r($arr);
執(zhí)行結(jié)果:
Array ( [15] => 16 [30] => 31 )
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- PHP遞歸的三種常用方式
- php遞歸函數(shù)三種實(shí)現(xiàn)方法及如何實(shí)現(xiàn)數(shù)字累加
- PHP 無限分類三種方式 非函數(shù)的遞歸調(diào)用!
- php菜單/評論數(shù)據(jù)遞歸分級算法的實(shí)現(xiàn)方法
- PHP遞歸算法的簡單實(shí)例
- PHP基于遞歸算法解決兔子生兔子問題
- PHP基于非遞歸算法實(shí)現(xiàn)先序、中序及后序遍歷二叉樹操作示例
- PHP基于二分法實(shí)現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
- PHP實(shí)現(xiàn)字符串翻轉(zhuǎn)功能的方法【遞歸與循環(huán)算法】
- PHP使用遞歸算法無限遍歷數(shù)組示例
- php獲得文件夾下所有文件的遞歸算法的簡單實(shí)例
- PHP二分查找算法示例【遞歸與非遞歸方法】
- PHP冒泡算法詳解(遞歸實(shí)現(xiàn))
- 關(guān)于PHP遞歸算法和應(yīng)用方法介紹
- PHP遞歸算法的詳細(xì)示例分析
- php全排列遞歸算法代碼
- php實(shí)現(xiàn)遞歸的三種基本方式
相關(guān)文章
PHP中如何使用Redis接管文件存儲(chǔ)Session詳解
這篇文章主要給大家介紹了關(guān)于在PHP中如何使用Redis接管文件存儲(chǔ)Session的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
php開發(fā)中的頁面跳轉(zhuǎn)方法總結(jié)
PHP頁面跳轉(zhuǎn)實(shí)現(xiàn)的功能就是將網(wǎng)站中一個(gè)網(wǎng)頁跳轉(zhuǎn)到另一個(gè)網(wǎng)頁中。對于剛剛學(xué)習(xí)PHP語言的朋友來說,是必須要掌握的基礎(chǔ)方法。2015-04-04
mongo Table類文件 獲取MongoCursor(游標(biāo))的實(shí)現(xiàn)方法分析
本篇文章是對mongo Table類文件 獲取MongoCursor(游標(biāo))的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
部署PHP項(xiàng)目應(yīng)該注意的幾點(diǎn)事項(xiàng)分享
這篇文章主要介紹了部署PHP項(xiàng)目應(yīng)該注意的幾點(diǎn)事項(xiàng),有需要的朋友可以參考一下2013-12-12
PHP實(shí)現(xiàn)bitmap位圖排序與求交集的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)bitmap位圖排序與求交集的方法,結(jié)合實(shí)例形式分析了php位圖排序及求交集運(yùn)算的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-07-07
php的日期處理函數(shù)及uchome的function_coomon中日期處理函數(shù)的研究
經(jīng)常在用php的時(shí)候會(huì)碰到一個(gè)關(guān)于時(shí)間日期的問題還有時(shí)區(qū)差異的問題,以前作項(xiàng)目的時(shí)候會(huì)把時(shí)間搞錯(cuò),要么就是提前八小時(shí)了,要么那個(gè)時(shí)間就是驢唇不對馬嘴的,現(xiàn)在我就來深入研究一下這里面的各個(gè)函數(shù)及其用法2011-01-01
Thinkphp框架開發(fā)移動(dòng)端接口(2)
這篇文章主要介紹了thinkphp框架開發(fā)移動(dòng)端接口的第2種方法,實(shí)現(xiàn)移動(dòng)端訪問自動(dòng)切換移動(dòng)主題模板,從而實(shí)現(xiàn)偽app訪問,感興趣的小伙伴們可以參考一下2016-08-08

