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 相关文章推荐
初探PHP5
Oct 09 PHP
BBS(php &amp; mysql)完整版(五)
Oct 09 PHP
PHP 验证码的实现代码
Jul 17 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
php 魔术方法详解
Nov 11 PHP
php数组随机排序实现方法
Jun 13 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
php similar_text()函数的定义和用法
May 12 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 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 PDO中文乱码解决办法
2009/07/20 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
python操作excel让工作自动化
2019/08/09 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
Python更新所有已安装包的操作
2020/02/13 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
python字典与json转换的方法总结
2020/12/28 Python
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
成考报名单位证明范本
2014/01/16 职场文书
文案策划求职信
2014/03/18 职场文书
六一节目主持词
2014/04/01 职场文书
安全生产承诺书范文
2014/05/22 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
朋友离别感言
2015/08/04 职场文书
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle