您所在的位置:首页 - PHP - 正文PHP
【PHP算法】一群猴子排成一圈,m,n猴子选大王算法
萧何-Vincent
2022-07-05
【PHP】
1278人已围观
一群猴子排成一圈,按1,2,...,n依次编号。
然后从第1只开始数,数到第m只,把它踢出圈,
然后从它后面再开始数,再数到第m只,在把它踢出去...,
如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。
思路分析:(遇到这种有变量的最好先假定具体数值,方便分析)
假定有6只猴子排成一圈,我们把圈给它剪开,那么编号就是1,2,3,4,5,6;排成一排
假定数到第2只把它剔除圈,那么为了维持圈循环的状态,当你数到1的时候,此时1应该放在6的后面,即:2,3,4,5,6,1
那么数到2的时候,剔除,应该就是:3,4,5,6,1
数到3的时候不剔除应该是:4,5,6,1,3
数到4的时候剔除:5,6,1,3
数到5的时候不剔除:6,1,3,5
数到6的时候剔除:1,3,5
数到7的时候不剔除:3,5,1
数到8的时候剔除:5,1
数到9的时候不剔除:1,5
数到10的时候剔除:5
最红猴王编号为:5
判断是否剔除:从以上规律,我们可以用数到几除以m取余,如果余数为0代表剔除,否则为不剔除,比如m为2,你数到1的时候那么就不剔除,数到2的时候余数为0,就要剔除....
function monkeyKing($n,$m){ $monkeys = range(1, $n); //函数创建一个包含指定范围的元素的数组 $i = 0; while (count($monkeys) > 1){ if (($i+1)%$m == 0) { //$i+1是指实际上数数的值,实际数数是1,2,3,4,5而$i是这些值的下标, //所以要加1得到实际的值与第m只相除余0才是数到第m只 unset($monkeys[$i]);//数到第m只就删掉 }else{ array_push($monkeys, $monkeys[$i]);//不是第m只的放到最后 unset($monkeys[$i]); //删除原来的占位 } $i ++; } return $monkeys; //输出数组中的当前元素的值}$monkey = monkeyKing(6, 2);print_r($monkey);//结果为array('10' => 5) ,代表一共数到了10,最后剩下5号
文章评论 (暂无评论,1278人围观)
站长推荐

思科、华为、H3C命令对照表
-
小程序实战:从入门到上线,手把手教你搭建天气预报微信小程序
PHP | 2022-07-05
-
【php算法】有一母牛,到4岁可生育,每年一头,所生均是一样的母牛...问n年后有多少头牛?
PHP | 2022-07-05
-
企业级域环境搭建实例——主域,辅域和子域,DNS配置实例
Network | 2022-07-01
-
MySQL + JSON = 王炸!!
DataBase | 2022-03-03
-
LVS(Linux虚拟服务)----服务器集群系统工作原理
Linux | 2022-03-01
-
元宇宙的来源是什么?涉及核心技术BIGANT
AI, Big Data | 2022-02-22
-
人工智能(Artificial Intelligence)、机器学习(Machine Learning)、深度学习(Deep Learning)三者区别
AI, Big Data | 2022-01-06
-
Redis 学习知识小记
DataBase | 2021-11-04
-
php面试常规问题主键索引和唯一索引有什么区别
DataBase | 2021-11-04
最新留言
-
世界末日我都挺过去了,看到楼主我才知道为什么上帝留我到现在!http://1r8.pistpyh.cn/
昵称:访客2024-07-04
-
这位作者的文笔极其出色,用词精准、贴切,能够形象地传达出他的思想和情感。http://oui.kblewwq.cn/
昵称:访客2024-07-04
-
坚持回帖!http://mqp.baishanct.com/
昵称:访客2024-07-04
-
在哪里跌倒,就在那里多爬一会儿!http://gx.baishanct.com/
昵称:访客2024-07-04
-
好东西,学习学习!http://mn7jf.xmona.com.cn/
昵称:访客2024-07-04
-
这么好的帖子,应该加精华!http://www.baishanct.com/
昵称:访客2024-07-04
-
昵称:微信用户2023-12-28
-
昵称:mm2023-12-12
-
昵称:微信用户2023-11-25
-
昵称:Tim2022-07-28
站点信息
- 文章总数:65
- 页面总数:1
- 分类总数:5
- 标签总数:12
- 评论总数:24
- 浏览总数:82970