PHP怎么解决约瑟夫环问题
发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章主要讲解了"PHP怎么解决约瑟夫环问题",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP怎么解决约瑟夫环问题"吧!约瑟夫环问题(猴子选大王)
千家信息网最后更新 2024年09月21日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安全错误
数据库的锁怎样保障安全
广电网络技术考试试题
上海北木网络技术有限公司
武汉国家网络安全产业
保护数据库安全的常用方法
某软件开发公司办公系统
完美平台服务器nanms
上栗软件开发项目管理
采用什么技术来保障网络安全
互联网安全斗象科技
防止web服务器回流
搞好网络安全
上网使用的网络安全技术
山东2022年单招学校网络技术
上海双线服务器托管
systems中心化数据库
我国网络安全现状图片分析
呼和浩特交友软件开发
信创 数据库 免费
华三服务器主机名修改
导航的网络安全需求
数据库和文件系统哪个重要
属于互联网助力农业科技
mac安装ftp服务器
vc与数据库技术教程
云服务器怎么手机控制
书店网络安全责任制度
怎么查软件开发商
一键搭建云免流服务器
金蝶修改服务器地址
蜜罐设备网络安全价格