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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
建立动态的WML站点(二)
Oct 09 PHP
PHP新手上路(六)
Oct 09 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
微信支付扫码支付php版
Jul 22 PHP
如何打开php的gd2库
Feb 09 PHP
php 算法之实现相对路径的实例
Oct 17 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
PHP项目多语言配置平台实现过程解析
May 18 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
thinkPHP实现瀑布流的方法
2014/11/29 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
玩转python爬虫之URLError异常处理
2016/02/17 Python
pycharm安装图文教程
2017/05/02 Python
用python写测试数据文件过程解析
2019/09/25 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
Python如何将装饰器定义为类
2020/07/30 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
通过实例解析python and和or使用方法
2020/11/14 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
董事长岗位职责
2013/11/30 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
公司授权委托书范文
2014/09/21 职场文书
市级三好学生评语
2014/12/29 职场文书
运动会800米赞词
2015/07/22 职场文书