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 相关文章推荐
php 函数使用方法与函数定义方法
May 09 PHP
PHP中的string类型使用说明
Jul 27 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
php获取目标函数执行时间示例
Mar 04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
PHP合并静态文件详解
Nov 14 PHP
php自定义错误处理用法实例
Mar 20 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
PHPMailer发送邮件
Dec 28 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
用php定义一个数组最简单的方法
Oct 04 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 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php的4种常用运行方式详解
2016/12/22 PHP
jcrop基本参数一览
2013/07/16 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
Python中的集合类型知识讲解
2015/08/19 Python
详解python单例模式与metaclass
2016/01/15 Python
对python的文件内注释 help注释方法
2018/05/23 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python实现感知机模型的示例
2020/09/30 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
入党申请书自我鉴定
2013/10/12 职场文书
校园新闻广播稿
2014/01/10 职场文书
信息技术教学反思
2014/02/12 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
大学迎新生标语
2014/10/06 职场文书
优秀班组事迹材料
2014/12/24 职场文书
培训班通知
2015/04/25 职场文书
党员承诺书范文2015
2015/04/27 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书