• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php基于环形链表解决约瑟夫环问题示例

    本文实例讲述了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程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
    • python环形单链表的约瑟夫问题详解
    • php使用环形链表解决约瑟夫问题完整示例
    • C语言基于循环链表解决约瑟夫环问题的方法示例
    • java基于双向环形链表解决丢手帕问题的方法示例
    • Java编程删除链表中重复的节点问题解决思路及源码分享
    • C语言解字符串逆序和单向链表逆序问题的代码示例
    • Java采用循环链表结构求解约瑟夫问题
    • Leetcode常见链表问题及代码示例
    上一篇:PHP基于关联数组20行代码搞定约瑟夫问题示例
    下一篇:浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php基于环形链表解决约瑟夫环问题示例 php,基于,环形,链表,解决,