php基于環(huán)形鏈表解決約瑟夫環(huán)問題示例
本文實例講述了php基于環(huán)形鏈表解決約瑟夫環(huán)問題。分享給大家供大家參考,具體如下:
先來重溫一下約瑟夫環(huán)問題:N個人圍成一圈,從第一個開始報數(shù),第M個將被殺掉,最后剩下一個,其余人都將被殺掉。例如N=6,M=5,被殺掉的順序是:5,4,6,2,3,1。
前面介紹了關(guān)聯(lián)數(shù)組解決約瑟夫環(huán)的方法,環(huán)形鏈表解決約瑟夫環(huán)的方法如下:
<?php
header("content-type:text/html;charset=utf-8");
class Child{
public $no;
public $next=null;
public function __construct($no){
$this->no=$no;
}
}
function addChild($n,&$first){ //$n是人的個數(shù),創(chuàng)建環(huán)形鏈表
for($i=0;$i<$n;$i++){
$child=new Child($i+1);
if($i==0){
$first=$child;
$cur=$child;
$cur->next=$cur;
}else{
$cur->next=$child;
$child->next=$first;
$cur=$cur->next;
}
}
}
function showHero($first){
$cur=$first;
while($cur->next!=$first){
echo "<br/>人的編號:".$cur->no;
$cur=$cur->next;
}
echo "<br/>人的編號:".$cur->no;
}
function countChild($first,$m,$k){
$cur=$first;
for($i=0;$i<$m-1;$i++){
$cur=$cur->next;
}
$j=0;
while($cur!=$cur->next){
if($j==$k-2){
echo "<br/>出列編號:".$cur->next->no;
$cur->next=$cur->next->next;
$cur=$cur->next;
$j=0;
}else{
$cur=$cur->next;
$j++;
}
}
echo "<br/>最后出列編號:".$cur->no;
}
addChild(10,$first);
showHero($first);
echo "<hr/>";
countChild($first,2,3); //第二個人開始數(shù),數(shù)到三出列
?>
運行結(jié)果:
人的編號:1 人的編號:2 人的編號:3 人的編號:4 人的編號:5 人的編號:6 人的編號:7 人的編號:8 人的編號:9 人的編號:10 -------------------------------------------------------------------------------- 出列編號:4 出列編號:7 出列編號:10 出列編號:3 出列編號:8 出列編號:2 出列編號:9 出列編號:6 出列編號:1 最后出列編號:5
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運算技巧總結(jié)》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
PHP取整函數(shù):ceil,floor,round,intval的區(qū)別詳細解析
以下是對PHP中的取整函數(shù):ceil,floor,round,intval的區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下2013-08-08
使用Limit參數(shù)優(yōu)化MySQL查詢的方法
我們在做一些查詢的時候總希望能避免數(shù)據(jù)庫引擎做全表掃描,因為全表掃描時間長,而且其中大部分掃描對客戶端而言是沒有意義的。那么在 MySQL 中有那些方式是可以避免全表掃面的呢?除了我們大家很熟悉的通過使用索引列或分區(qū)等方式來進行查詢的優(yōu)化之外還有那些呢?2008-11-11
CodeIgniter php mvc框架 中國網(wǎng)站
CodeIgniter 是一個小巧但功能強大的 PHP 框架,作為一個簡單而“優(yōu)雅”的工具包,它可以為 PHP 程序員建立功能完善的 Web 應(yīng)用程序。如果你是一個使用共享主機,并且為客戶所要求的期限而煩惱的開發(fā)人員,如果你已經(jīng)厭倦了那些傻大笨粗的框架2008-05-05
php download.php實現(xiàn)代碼 跳轉(zhuǎn)到下載文件(response.redirect)
一直對php不太熟悉,今天需要類型asp的 response.redirect語句,但一直沒有很好的解決方法。下面是問了朋友才知道的。2009-08-08
探討PHP使用eAccelerator的API開發(fā)詳解
本篇文章是對PHP使用eAccelerator的API開發(fā)進行了詳細的分析介紹,需要的朋友參考下2013-06-06
php采用file_get_contents代替使用curl實例
這篇文章主要介紹了php采用file_get_contents代替使用curl的方法,實例講述了file_get_contents模擬curl的post方法,對于服務(wù)器不支持curl的情況來說有一定的借鑒價值,需要的朋友可以參考下2014-11-11
php中將html中的br換行符轉(zhuǎn)換為文本輸入中的換行符
PHP中的有個非常好的函數(shù):nl2br(),將文本框中的換行轉(zhuǎn)換為HTML頁面的<br />,但是如何實現(xiàn)將html中的<br />換行符轉(zhuǎn)換為文本框中的換行符呢2013-03-03

