n个猴子坐一圈轮流1、2、3报数,每报到3的猴子则出列。最后剩下的那只为猴王。请用php编写一个函数,输入为猴子的个数和报数的起始位置,返回值为猴王的序号
<?php function fun($n,$begin) { //输入判断 if(!is_int($n) || $n<=0)return false; if(!is_int($begin) || $begin>$n || $begin<=0)return false; //初始化数组,使其内部指针指向传进函数的“开始位置” $arr = array(); for($i=1;$i<=$n;$i++)$arr[] = $i; for($i=1;$i<$begin;$i++,next($arr)); while(count($arr)>1) //当数组大小不为1时循环报数 { //报数,往后数两位 for($i=0;$i<2;$i++) { if(!next($arr))reset($arr); } //获得报数3位置的键、值(此处内部指针会前进一步) $key = each($arr); if(!current($arr)) //如果报数到3的位置是数组末端,及通过each后,指针超出了数组的范围 { reset($arr); //将内部指针重置到数组首部 array_pop($arr); //删除数组末端的键、值 } else { prev($arr); //否则指针回退一格 unset($arr[$key['key']]); //删除报数为3的键、值 } } if(!current($arr))reset($arr); //循环过后,因为each操作,内部指针有可能超越了数组末端,需要重置 return current($arr); } echo fun(5,3); ?>
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
首先,我们要明确问题背景:有n个猴子,编号从0到n-1,每一轮从第1个猴子开始数数,数到m的猴子会被淘汰(或称为“被选中”)。这个过程持续进行,直到所有猴子都被选中。这个问题的核心在于如何用程序来模拟这一...
猴子报数,也被称为约瑟夫环问题,是计算机科学中的一个经典算法问题。这个问题源自一个古老的犹太传说,涉及到一系列猴子围绕一个圆圈报数,每当数到特定数字的猴子就会被移出圈子,直到只剩下最后一只猴子为止。在...
在该问题中,有`n`只猴子围成一圈,从某只猴子开始报数(假设从1开始),每数到`m`时,就有一只猴子被淘汰出局,然后从下一只猴子重新开始报数,直到最后只剩下一只猴子,即为“大王”。 #### 二、C语言实现解析 此...
这个问题源自于一个有趣的寓言故事:一群猴子围成一圈,从某个猴子开始计数,数到特定数值的猴子被淘汰,然后剩下的猴子继续这个过程,直到只剩下最后一只猴子,这只猴子就被选为“大王”。在编程实现中,这个特定...
这个问题描述如下:一群编号从1到m的猴子围成一圈,从第1号开始数数,每数到第n号的猴子就离开圈子,然后从下一只继续数,直到圈中只剩下一个猴子,这个猴子即为大王。本篇将探讨如何使用C++语言,通过数组和链表两...
在这个问题中,猴子们按照一定的规则淘汰,最终剩下的一个被选为大王。题目中给出了四种不同的解决方案,分别使用了循环链表、数组以及普通的for循环来实现。 首先,我们来理解这个问题的本质。它是一个基于循环...
问题的目标就是找到在特定报数规则下,哪只猴子最终会被选为大王。 #### 三、代码分析 本题的C++代码实现中,使用了一个数组`p[20]`来表示猴子的状态。数组中的每个元素代表一只猴子,初始值为1表示猴子还在圈内,...
对于猴子吃桃问题,我们可以定义一个函数,输入参数为当前剩余桃子数,如果桃子数为1则返回1,表示找到了初始桃子数;否则,返回2倍于第二天桃子数减1的结果。这个函数会不断地调用自身,直到满足结束条件为止。 在...
从现有的信息来看,文档标题是“对于问题猴子的处理.pdf”,然而内容部分却是无意义的字符组合和数字序列,这些内容对于正常阅读和理解文档所要传达的知识点是无帮助的。 尽管如此,我会基于标题“对于问题猴子的...
本资源摘要信息涵盖了五个经典的C语言编程题目,包括猴子吃桃问题、回文数问题、杨辉三角问题、加密问题和平方数问题。每个题目都包含问题描述、程序分析和源代码实现。 一、猴子吃桃问题 猴子吃桃问题是一个经典...
这个问题是通过递归的思想来模拟猴子分桃的过程,用Java代码实现了寻找满足条件的最小桃子数的算法。通过循环和条件判断,我们能找到一个桃子数,使得每只猴子都能按照规则进行分食,并且在最后一只猴子分完后,桃子...
BogoCount,猴子数数,猴子数数游戏. 编程语言: java 测试环境: 小米3(5寸屏,1080*1920) #进度表 20150407 新建猴子数数项目 20150408 完成,加上动画,新的UI #问题 1.CardView 未实现 2.子控件不重叠 已实现,需要优化 ...
猴子吃桃子问题是一个经典的逆向思维问题,它涉及到数学计算和编程算法的运用。问题描述了一群猴子在连续的10天内吃桃子的过程,每天吃掉现有桃子的一半后再加一个,到第10天时只剩下一个桃子。我们的目标是通过这个...
这个问题源自一个寓言故事:一群猴子围成一圈,从第一只开始数数,数到指定数值的猴子被淘汰出局,然后从下一只继续数,直到只剩下一个猴子,这个猴子就被选为大王。程序的主要目的是根据猴子的数量和淘汰的条件找出...
在编程领域,猴子吃桃问题是一个经典的动态规划问题,它源于中国的民间故事,常用于考察程序员的逻辑思维和算法设计能力。在这个问题中,一只猴子每天会吃掉一定数量的桃子,并且会留下一部分桃子供第二天食用。具体...
n个猴子围坐一圈并按照顺时针方向从1到n编号,从第s个猴子开始进行1到m的报数,报数到第m的猴子退出报数,从紧挨它的下一个猴子重新开始1到m的报数,如此进行下去知道所有的猴子都退出为止。求给出这n个猴子的退出的...
约瑟夫问题,又称“约瑟夫环”或“猴子选大王”,是一个著名的理论问题,源自古希腊的数学家约瑟夫·弗拉基米尔。这个问题的基本设定是:有一群人围成一个圈,从某个人开始按顺时针方向编号,然后从第一个人开始报数...
任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求: 输入...