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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
帖几个PHP的无限分类实现想法~
Jan 02 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
php木马webshell扫描器代码
Jan 25 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
php实现读取内存顺序号
Mar 29 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
php函数式编程简单示例
Aug 08 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获取域名的google收录示例
2014/03/24 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
Using the TextRange Object
2006/10/14 Javascript
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
JavaScript 数组详解
2013/10/10 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Python深入学习之对象的属性
2014/08/31 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
详解Python中的type()方法的使用
2015/05/21 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
历史学专业个人的自我评价
2013/10/13 职场文书
班级聚会策划书
2014/01/16 职场文书
个人查摆剖析材料
2014/02/04 职场文书
股份合作协议书范本
2014/04/14 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python