PHP怎么解决约瑟夫环问题
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"PHP怎么解决约瑟夫环问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP怎么解决约瑟夫环问题"吧!约瑟夫环问题(猴子选大王)
千家信息网最后更新 2025年02月23日PHP怎么解决约瑟夫环问题
这篇文章主要讲解了"PHP怎么解决约瑟夫环问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP怎么解决约瑟夫环问题"吧!
约瑟夫环问题(猴子选大王)PHP版
约瑟夫斯问题问题有时候也被描述成猴子选大王问题,题目如下。(最后会贴上约瑟夫问题的来历)
一群猴子排成一圈,按1,2,…,n依次编号。
然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。
要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
用程序模拟该过程,代码如下:
function monkeyKing($n, $m){ $arr = range(1, $n); //构造一个数组 $i = 1; //从第一个开始循环 while (count($arr) > 1) { //如果总数大于1 if ($i % $m != 0) { $arr[] = $arr[$i - 1]; //不被踢出则压入数组尾部 } unset($arr[$i - 1]); //压入数组然后删除 $i++; //继续循环 } return $arr[$i - 1]; //直至最后剩下一个为大王}print_r(monkeyKing(5, 3)); //第4只为大王
下面是模拟的过程,对于不剔除的猴子,不断的加入数组尾部:
$n = 5 $m = 3 $arr = [1, 2, 3, 4, 5] $i $arr ---+------------------------ 1 x 2 3 4 5 1 2 x x 3 4 5 1 2>3 x x x 4 5 1 2 4 x x x x 5 1 2 4 5 x x x x x 1 2 4 5>6 x x x x x x 2 4 5 7 x x x x x x x 4 5 2 8 x x x x x x x x 5 2 4>9 x x x x x x x x x 2 4 10 x x x x x x x x x x 4 2 11 x x x x x x x x x x x 2 4>12 x x x x x x x x x x x x 4
约瑟夫问题来历:
这个问题是以弗拉维奥·约瑟夫命名的,它是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道是哪一个。
感谢各位的阅读,以上就是"PHP怎么解决约瑟夫环问题"的内容了,经过本文的学习后,相信大家对PHP怎么解决约瑟夫环问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
问题
约瑟
约瑟夫
大王
猴子
数组
夫斯
过程
学习
内容
军队
尾部
来历
罗马
循环
不断
世纪
两个
代码
历史学家
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
面试 数据库连接池和缓存
云服务器连接端口在哪里看
怎么知道服务器有没有mac记录
网络服务器ip
无线路由器dhcp服务器
一分钟学会电脑软件开发
小米招应届生软件开发
特斯拉503服务器维护是什么
东北大学网络技术学院
中国银行软件开发中心西安
股票交易软件开发
重庆对日软件开发培训
此数据库的结构不符合
政企网络安全怎么实施防御
绩效数据库名称
win10云服务器怎么安装d盘
全军网络安全和信息化
天华软件开发公司
X光机成像软件开发框架
抓服务器
软件开发的基本要素包括
邯郸互联网软件开发定做
广西画龙网络技术有限公司
欧洲被美国互联网科技巨头垄断
东北大学网络技术学院
创建医院数据库表单代码
web服务器下载教程
网络安全交流会视频
四级网络技术少答给分吗
阿里数据库恢复指定表