Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >猴子选大王算法

猴子选大王算法

作者头像
Marco爱吃红烧肉
发布于 2021-07-23 07:27:37
发布于 2021-07-23 07:27:37
40100
代码可运行
举报
文章被收录于专栏:无敌小笼包无敌小笼包
运行总次数:0
代码可运行

有M个monkey ,转成一圈,第一个开始数数,数到第N个出圈,下一个再从1开始数,再数到第N个出圈,直到圈里只剩最后一个就是大王 【单项循环数据链表】

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

<?php 

class MonkeyKing
{ 	
	var $next;
   	var $name;
   public function __construct($name)
   {
       $this->name = $name;
   }
   public static function whoIsKing($count, $num)
   {
       /************* 构造单向循环链表 ******************/
       // 构造单向循环链表
       $current = $first = new MonkeyKing(1);
       for($i=2; $i<=$count; $i++)
       {
           $current->next = new MonkeyKing($i);
           $current = $current->next;
       }
       // 最后一个指向第一个
       $current->next = $first;
       // 指向第一个
       $current = $first;
       /*************** 开始数数 *********************/
       // 定义一个数字
       $cn = 1;
       while($current !== $current->next)
       {
           $cn++;  // 数数
           if($cn == $num)
           {
               $current->next = $current->next->next;
               $cn = 1;
           }
           $current = $current->next;
       }
       // 返回猴子王的名字
       return $current->name;
   }
}
// 共10个猴子每3个出圈
echo MonkeyKing::whoIsKing(10,3);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java数据结构和算法】007-链表:循环链表和约瑟夫问题
Josephu  问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列;
訾博ZiBo
2025/01/06
1140
【Java数据结构和算法】007-链表:循环链表和约瑟夫问题
python算法与数据结构-循环链表(39)
  上一篇我们已经讲过单链表,本篇给大家讲解循单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点,其基本操作和单链表思路一样。
Se7eN_HOU
2019/07/01
6290
python算法与数据结构-循环链表(39)
【数据结构与算法】【约瑟夫问题】还在用递归?教你用链表秒杀约瑟夫
本文原本是对链表学习的记录笔记 因为约瑟夫问题笔记经典就拿来做大题材了,要是没学过链表或者链表还不熟悉的伙伴可以慢慢读,要是以及学过链表了,纯粹来看全新的解题思路的 可以用目录传送门往下跳
苏泽
2024/03/01
2130
算法科普:什么是约瑟夫环
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 n 个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为 k 的人开始报数,数到 m 的那个人出圈;他的下一个人又从 1 开始报数,数到 m 的那个人又出圈;依此规律重复下去,直到剩余最后一个胜利者。
五分钟学算法
2019/05/06
1.3K0
算法科普:什么是约瑟夫环
452. 删除链表中的元素基本操作。链表
删除链表中等于给定值val的所有节点。 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。
和蔼的zhxing
2018/09/04
9700
[数据结构与算法] 邂逅链表
在我们的生活中, 最符合链表结构(准确的说是双链表)的物体的就是火车了(如下图). 我们在车厢内时,每次只能从本车厢到下一个车厢或者上一个车厢,如同对链表的遍历操作一样~~~
时间静止不是简史
2020/07/25
5000
[数据结构与算法] 邂逅链表
【41期】盘点那些必问的数据结构算法题之链表
来自:juejin.im/post/5b8a0e99f265da43320730ba
良月柒
2020/09/23
5850
【41期】盘点那些必问的数据结构算法题之链表
算法创作|“猴子选王游戏”问题解决方法
题目分析:本题的核心思路是一个约瑟夫环算法,在一开始利用while循环将猴子一只一只取出来用i标号,再将i判断是不是为要剔除的数字,不剔除就加入一个新的列表等待下一次循环,并且将i继续加1,一直循环到只有最后一只猴子为止.
算法与编程之美
2021/04/22
2670
单向环形链表介绍以及约瑟夫问题分析
从判断一个单链表是否存在循环而扩展衍生的问题,有则称之为有环链表问题,也就是经典的约瑟夫问题,也称为约瑟夫环。
周小末天天开心
2023/10/16
2890
单向环形链表介绍以及约瑟夫问题分析
python算法与数据结构-双向链表(40)
  一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。
Se7eN_HOU
2019/06/28
4550
python算法与数据结构-双向链表(40)
【算法】约瑟夫环问题解析与实现
约瑟夫环(Josephus Problem)是一个经典的数学问题,涉及一个编号为 1 到 n 的人围成一圈,从第一个人开始报数,报到某个数字 m 的人出列,然后再从下一个人开始报数,如此循环,直到所有人都出列。本篇博客将详细解析约瑟夫环问题,并使用 Python 实现算法。
繁依Fanyi
2023/10/12
1.2K0
程序员面试必备PHP基础面试题 – 第十五天
多态:对具有继承关系的不同类对象,可以对相同名称的成员函数调用,产生不同的反应效果
PHP学习网
2022/08/03
5150
数据结构与算法:双向链表
单链表中,一个节点存储数据和指向下一个节点的指针,而双向链表除了上述两个内容,还包括了指向上一个节点的指针
用户11029103
2024/03/19
1110
数据结构与算法:双向链表
看小朋友做游戏顿时解决了约瑟夫问题
Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数 到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由
冷环渊
2021/12/27
3750
看小朋友做游戏顿时解决了约瑟夫问题
python算法与数据结构-单链表(38)
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
Se7eN_HOU
2019/07/02
5020
Josephu(约瑟夫、约瑟夫环) 问题
Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。
乐心湖
2021/01/18
8570
Josephu(约瑟夫、约瑟夫环) 问题
数据结构基础温故-1.线性表(下)
在上一篇中,我们了解了单链表与双链表,本次将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表(circular linked list)。
Edison Zhou
2018/08/20
4700
数据结构基础温故-1.线性表(下)
PHP经典算法面试题列表
每组测试用例仅包含一组数据,每组数据第一行为原字符串,长度不超过 10 ,仅包含大小写字符与数字。接下来会有一个数字 n 表示有 n 个操作,再接下来有 n 行,每行两个整数,表示每次操作的(p , l)。
友儿
2022/09/11
1K0
嵌入式工程师,用好C语言这一利器的三要素
虽然看起来以上的说法很抽象,给人如坠雾里的感觉,其实就是用C语言进行遇到问题、分析问题和解决问题的过程。
嵌入式与Linux那些事
2023/09/05
2340
嵌入式工程师,用好C语言这一利器的三要素
Qz学算法-数据结构篇(链表、栈)
做add添加时,先找到链表的最后,如果这个链表没有最后,那么我们加入的这个node节点就是这次的头指针指向下一个节点
浅辄
2023/06/07
2150
相关推荐
【Java数据结构和算法】007-链表:循环链表和约瑟夫问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档