php基于环形链表解决约瑟夫环问题示例


Posted in PHP onNovember 07, 2017

本文实例讲述了php基于环形链表解决约瑟夫环问题。分享给大家供大家参考,具体如下:

先来重温一下约瑟夫环问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。

前面介绍了关联数组解决约瑟夫环的方法,环形链表解决约瑟夫环的方法如下:

<?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); //第二个人开始数,数到三出列
?>

运行结果:

人的编号:1
人的编号:2
人的编号:3
人的编号:4
人的编号:5
人的编号:6
人的编号:7
人的编号:8
人的编号:9
人的编号:10
--------------------------------------------------------------------------------

出列编号:4
出列编号:7
出列编号:10
出列编号:3
出列编号:8
出列编号:2
出列编号:9
出列编号:6
出列编号:1
最后出列编号:5

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 定界符 使用技巧
Jun 14 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
利用PHP扩展vld查看PHP opcode操作步骤
Mar 04 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
PHP简单日历实现方法
Jul 20 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
php中的explode()函数实例介绍
Jan 18 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 #PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 #PHP
php实现的三个常用加密解密功能函数示例
Nov 06 #PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 #PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 #PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 #PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 #PHP
You might like
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
javascript数组的使用
2013/03/28 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
EM算法的python实现的方法步骤
2018/01/02 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Python箱型图绘制与特征值获取过程解析
2019/10/22 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
成立公司计划书
2014/05/07 职场文书
单位承诺书格式
2014/05/21 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
如何正确理解python装饰器
2021/06/15 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL