php 约瑟夫环问题(环形链表)
约瑟夫环问题(环形链表) [代码片段(61行)]
<?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是小孩个数,创建环形链表 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); //第二个小孩开始数,数到三出列 ?> //该片段来自于http://outofmemory.cn
- 上一篇:php 分割文件并进行Base64编解码
- 下一篇:PHP合并discuz用户脚本
精彩图集
精彩文章