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 相关文章推荐
安装APACHE
Jan 15 PHP
经典的PHPer为什么被认为是草根?
Apr 02 PHP
PHP的SQL注入过程分析
Jan 06 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
关于PHP语言构造器介绍
Jul 08 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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
CI框架安全类Security.php源码分析
2014/11/04 PHP
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
Python 流程控制实例代码
2009/09/25 Python
Python如何获取系统iops示例代码
2016/09/06 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
通过实例了解python property属性
2019/11/01 Python
python实现文法左递归的消除方法
2020/05/22 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
应届毕业生的自我鉴定
2013/11/13 职场文书
最热门的自我评价
2013/12/30 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
金融保险专业求职信
2014/09/03 职场文书
入党积极分子个人总结
2015/03/02 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
MySQL 查询速度慢的原因
2021/05/25 MySQL
MySQL 数据库范式化设计理论
2022/04/22 MySQL
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS