PHP基于遞歸實現(xiàn)的約瑟夫環(huán)算法示例
本文實例講述了PHP基于遞歸實現(xiàn)的約瑟夫環(huán)算法。分享給大家供大家參考,具體如下:
約瑟夫環(huán)問題: 39 個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧愿死也不要被敵人抓。于是決定了自殺方式,41個人排成一個圓圈,由第1個人開始報數(shù),每報數(shù)到第3人該人就必須自殺。然后下一個重新報數(shù),直到所有人都自殺身亡為止。然而Josephus 和他的朋友并不想遵從,Josephus要他的朋友先假裝遵從,他將朋友與自己安排在第16個與第31個位置,于是逃過了這場死亡游戲。
<?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í)行結果:
Array ( [15] => 16 [30] => 31 )
更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結構與算法教程》、《php程序設計算法總結》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP常用遍歷算法與技巧總結》及《PHP數(shù)學運算技巧總結》
希望本文所述對大家PHP程序設計有所幫助。
- PHP遞歸的三種常用方式
- php遞歸函數(shù)三種實現(xiàn)方法及如何實現(xiàn)數(shù)字累加
- PHP 無限分類三種方式 非函數(shù)的遞歸調用!
- php菜單/評論數(shù)據(jù)遞歸分級算法的實現(xiàn)方法
- PHP遞歸算法的簡單實例
- PHP基于遞歸算法解決兔子生兔子問題
- PHP基于非遞歸算法實現(xiàn)先序、中序及后序遍歷二叉樹操作示例
- PHP基于二分法實現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
- PHP實現(xiàn)字符串翻轉功能的方法【遞歸與循環(huán)算法】
- PHP使用遞歸算法無限遍歷數(shù)組示例
- php獲得文件夾下所有文件的遞歸算法的簡單實例
- PHP二分查找算法示例【遞歸與非遞歸方法】
- PHP冒泡算法詳解(遞歸實現(xiàn))
- 關于PHP遞歸算法和應用方法介紹
- PHP遞歸算法的詳細示例分析
- php全排列遞歸算法代碼
- php實現(xiàn)遞歸的三種基本方式
相關文章
php htmlspecialchars()與shtmlspecialchars()函數(shù)的深入分析
本篇文章是對php中的htmlspecialchars()與shtmlspecialchars() 函數(shù)進行了詳細的分析介紹,需要的朋友參考下2013-06-06PHP跳出for循環(huán)中的break和continue
在PHP中,可以使用break關鍵字來跳出循環(huán),,PHP中還可以使用continue關鍵字跳過本次循環(huán)并繼續(xù)執(zhí)行下一次循環(huán),當循環(huán)執(zhí)行到continue語句時,本次循環(huán)中continue之后的代碼將不再執(zhí)行,直接進入下一次循環(huán)2023-09-09PHP之將POST數(shù)據(jù)轉化為字符串的實現(xiàn)代碼
今天來分享一個方便我們做LOG日志記錄的自定義函數(shù),需要將POST數(shù)據(jù)轉化為字符串,需要的朋友可以參考下2016-11-11