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中文本操作的类
Mar 17 PHP
关于页面优化和伪静态
Oct 11 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php获取文件大小的方法
Feb 26 PHP
php+mysqli使用面向对象方式更新数据库实例
Jan 29 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
php中实现字符串翻转的方法
Feb 22 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
Zend的MVC机制使用分析(一)
2013/05/02 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
JavaScript 继承详解(一)
2009/07/13 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
Cpy和Python的效率对比
2015/03/20 Python
Python安装第三方库的3种方法
2015/06/21 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
机关单位动员会主持词
2014/03/20 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
Django cookie和session的应用场景及如何使用
2021/04/29 Python
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技