`

猴子数数问题

    博客分类:
  • PHP
PHP 
阅读更多

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);
?>

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    C语言经典例子--数猴子

    C语言练习中的经典例子:数猴子。假设有n个猴子,每个猴子的编号为0.1.2.3...n-1,从第1个开始,选出每次数到m的猴子,并重新数数直到所有的猴子都被选完为止。

    猴子报数 计算器 VC++

    集猴子报数程序和简单计算器程序于一体的程序,个人认为实现的很巧妙。猴子报数(约瑟夫环)和计算器用VC++实现。两个功能通过单击对话框上的“功能切换”按钮实现。

    BogoCountGame:BogoCount , 猴子数数

    BogoCount,猴子数数,猴子数数游戏. 编程语言: java 测试环境: 小米3(5寸屏,1080*1920) #进度表 20150407 新建猴子数数项目 20150408 完成,加上动画,新的UI #问题 1.CardView 未实现 2.子控件不重叠 已实现,需要优化 ...

    ACM 猴子报数

    n个猴子围坐一圈并按照顺时针方向从1到n编号,从第s个猴子开始进行1到m的报数,报数到第m的猴子退出报数,从紧挨它的下一个猴子重新开始1到m的报数,如此进行下去知道所有的猴子都退出为止。求给出这n个猴子的退出的...

    所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的编号

    山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王.输出大王的...

    猴子吃桃问题

    该算法是描述猴子吃桃,计算他现在拥有的桃子数,该算法为C#编写。

    猴子选大王

    任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求: 输入...

    JAVA编写猴子分食问题

    五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。...那么桃子数最少应该有几个呢?

    c语言经典编程例如猴子吃桃问题

    c语言经典编程 例如猴子吃桃问题 回文数问题 杨辉三角 加密问题 平方数问题 等等

    利用数组实现猴子选大王问题 C++

    利用数组实现猴子选大王问题 输入猴子的个数以及报的数得出大王的编号

    猴子选大王的算法 (约瑟夫环)或称循环链表

    有M只猴子,依次按1到M的顺序坐好,然后从第一只猴子开始报数,数到N(N)的那只猴子就出局,从下一只猴子开始重新开始数....依次...直到只剩下最后一只猴子,则那只猴子就是大王。 要求:只输入M N值,就可以得到...

    约瑟夫问题(猴子选大王)数学解法

    约瑟夫问题是一个经典问题(猴子选大王) 有循环链表等多种解法,这里提供的是最简单的数学解法数学解法。

    猴子选大王设计并编写程序

    猴子选大王是一个典型的编程问题,一般可用链表(可以用很大的数)或者while循环(使用此...设计并编写程序,实现如下功能:(1) 要求由用户输入开始时的猴子数n、报数的最后一个数m。(2) 给出当选猴王的初始编号。

    猴子选大王 数据结构课设

    任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1--m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求: 输入...

    数据结构 猴子选大王 C++

    任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:输入...

    猴子选大王问题 的习题解

    计算机专业习题解,有实验报告格式等。非常好用!

    一个关于猴子选大王的源代码

    任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1--m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 要求:(注:...

    猴子选大王问题(约瑟夫问题).docx

    计算机 电子信息工程 通信工程 实验 课程设计 工程项目 资源 必过 已过 好用 答辩简单 按着来就行 大学生关注我 以后所有我的课设都会更新 所需积分很低 签一次到就能得不用去桃宝买 多支持 个人主页有更多课设实验...

    猴子选大王 c语言程序

    这个是个c程序,主要就是建立个单循环链表存入猴子的只数,然后能继续操作猴子再选功能

Global site tag (gtag.js) - Google Analytics