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下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
PHP中PDO的错误处理
Sep 04 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
php经典算法集锦
Nov 14 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 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
php 多个submit提交表单 处理方法
2009/07/07 PHP
提高PHP编程效率的方法
2013/11/07 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python 接口返回的json字符串实例
2018/03/27 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
python热力图实现简单方法
2021/01/29 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
公司出纳岗位职责
2013/12/07 职场文书
留学生如何写好自荐信
2013/12/27 职场文书
汽车促销活动方案
2014/03/31 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
大学课外活动总结
2014/07/09 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
草房子读书笔记
2015/06/29 职场文书
思想工作总结范文
2015/08/12 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
PHP判断是否是json字符串
2021/04/01 PHP