PHP版的猴子选大王算法
猴子选大王
这个算法可能是目前我看到的最简洁都算法吧,而且很好理解。它不同于其他算法,其他算法都是判断这个猴子能不能被选中,而他只是找出不能被选中的猴子,然后将其塞到数组模拟的环状队列中,参与下次选。
<?php
/**
 * 本题的重点是,如果猴子所在的位置数不能被m整除,那么这个猴子就不会被踢出,
 * 会参加下一轮的循环
 * @param $n int n个猴子参与
 * @param $m int 踢出第m个猴子
 * @return int
 */
function getKing(int $n, int $m): int
{
    $arr = range(1, $n);// 为n个猴子排序
    $i = 0;
    // 只剩一个猴子时返回,它就是王
    while (count($arr) > 1) {
        // 猴子的个数从1开始数
        if (($i + 1) % $m != 0) {// 如果猴子的编号不能被$m整除,就说明数m个数,它不会被数中
            array_push($arr, $arr[$i]);// 猴子移到数组尾部,参与下次数数
        }
        unset($arr[$i]);// 踢出这个猴子
        $i++;
    }
    return array_shift($arr);
}
echo(getKing(10, 4));
												
											PHP版的猴子选大王算法的更多相关文章
- PHP洗牌、猴子选大王两个小算法
		
<一>洗牌算法 /** *洗牌算法washCard *@param $cardNum *@return array */ function washCard($cardNum) { $ca ...
 - 约瑟夫环问题(猴子选大王)PHP版
		
约瑟夫斯问题问题有时候也被描述成猴子选大王问题,题目如下.(最后会贴上约瑟夫问题的来历) 一群猴子排成一圈,按1,2,…,n依次编号. 然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再 ...
 - sicily  猴子选大王
		
题目描述 猴子选大王,有N只猴子,从1-N进行编号.它们按照编号的顺时针方向,排成一个圆圈,然后从第一只猴子开始报数.第一只猴子报1,以后每只猴子报的数字都是它前面猴子所报数字加1.如果一只猴子报的数 ...
 - POJ3750: 小孩报数问题+一道经典约瑟夫问题(猴子选大王)
		
又一次因为一个小错误,POJ上Wrong Answer了无数次..... 在差不多要放弃的时候,发现了这个猥琐的不能再猥琐的bug,改完了提交就AC了,简直无语.... 本题wo采用模拟方法: 1 # ...
 - PHP编程----猴子选大王
		
<?php/** * 猴子选大王 * 17个猴子围成一圈,从某个开始报数1-2-3-1-2-3---报"3"的猴子就被淘汰, * 游戏一直进行到圈内只剩一只猴子它就是猴大王了 ...
 - 猴子选大王 (约瑟夫环)(c#)
		
猴子选大王问题: 一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1到m的顺序围坐一圈, 从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子, ...
 - 猴子选大王的c#实现
		
原文地址:猴子选大王的c#实现作者:余文 今天被问到了猴子选大王的意思,题目大意就是说有n只猴子围坐成一个圈,按顺时针方向从1到n编号.然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再 ...
 - 猴子选大王【PHP】
		
目录 猴子选大王 指针解决 数组压栈 猴子选大王 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不 ...
 - C语言程序设计-猴子选大王[链表应用]
		
2032 猴子选大王 Description 有N只猴子,从1~N进行编号.它们按照编号的顺时针方向排成一个圆圈,然后从第一只猴子开始报数.第一只猴子报的第一个数字为1,以后每只猴子报的数字都是它们前 ...
 
随机推荐
- CS5266参数|Capstone CS5266|CS5266应用方案
			
随着目前手机.笔电和平板类产品都是用的Type-C接口,特别是苹果类的笔电和平板就只有一个Type-C接口,在很多工作.学习.娱乐中突显很多不方便的情况,别是需要一些其他的功能如:鼠标键盘接口USB2 ...
 - Linux开关机与登录注销
			
开机和重启 shutdown -h now:立即关机计算机 shutdown -h 1:1分钟后关机 halt:立即关机 reboot:立即重启 sync:把内存的数据同步到磁盘 注: shutdow ...
 - centos6.5搭建Apache-虚拟主机
			
一.配置基于域名的虚拟用户 1.创建虚拟用户的网页根目录 cd /usr/local/httpd/htdocs/ mkdir benetcom cd benetcom echo "<h ...
 - POJ 2442 Sequence堆 优先队列
			
题目描述 给定m个序列,每个序列包含n个非负整数.现在我们可以从每个序列中选择一个数字以形成一个具有m个整数的序列.显然,我们可以得到n ^ m种这种序列.然后,我们可以计算每个序列中的数字总和,并获 ...
 - js 调用同级的 iframe 方法
			
有两个 iframe <iframe id="a"> <script> function food(a){ return a+1; } </scrip ...
 - zabbix监控图形中文乱码的解决方法
			
问题描述: 最近搭建了一套zabbix,当我把语言切换到中文的时候,发现监控的图形界面中一些中文参数乱码,但是图形界面在英文环境下完全没有乱码问题.如下图(中文界面): 解决方法: 解决方法有两种,方 ...
 - RabbitMQ 消息中间件 的下载与安装【window10】
			
1.前言 弄了好久,才终于把 rabbitmq装好 ,本来是很简单的,但是,安装有个要求就是路径不能有中文字符, 虽然可以安装,但是无法运行,需要修改路径名为非中文字符后重装rabbitmq才可以运行 ...
 - PPT2010制作图片玻璃磨砂效果
			
原文链接: https://www.toutiao.com/i6488928834799272462/ 选择"插入"选项卡,"图像"功能组,"图片&q ...
 - C#检测外部exe程序弹窗错误,并重启
			
private void button2_Click(object sender, EventArgs e) { string mainTitle = System.Configuration.Con ...
 - 五天学完MySQL打卡挑战 day01
			
明天继续上传学习笔记和练习的Word文档 晚安~