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 相关文章推荐
3.从实例开始
Oct 09 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
Oct 25 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
PHP实现打包zip并下载功能
Jun 12 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+MySQL修改记录的方法
2015/01/21 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
Python的Django框架使用入门指引
2015/04/15 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python import与from import使用及区别介绍
2018/09/06 Python
python实现AES加密解密
2019/03/28 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
酒后驾驶检讨书
2014/01/27 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电
如何用JS实现简单的数据监听
2021/05/06 Javascript
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL