php五只猴子分椰子_PHP实现的猴王算法(猴子选大王)示例
本文实例讲述了PHP实现的猴王算法。分享给大家供大家参考,具体如下:
function getKingMokey($n, $m)
{
$monkey[0] = 0;
//将1-n只猴子顺序编号 入数组中
for($i= 1; $i<= $n; $i++)
{
$monkey[$i] = $i;
}
$len = count($monkey);
//循环遍历数组元素(猴子编号)
for($i= 0; $i< $len; $i= $i)
{
$num = 0;
foreach($monkey as $key => $value)
{
if($value == 0) continue;
$num++;
$values = $value;
}
//若只剩一只猴子 则输出该猴子编号(数组元素值) 并退出循环
if($num == 1)
{
echo $values;
exit;
}
//将第$i只猴子踢出队伍(相应数组位置元素值设为0)
$monkey[$i] = 0;
//打印该猴子位置
echo $i."";
//设置计数器
for($j= 1; $j<= $m; $j++)
{
//猴子编号加一,遍历下一只猴子
$i++;
//若该猴子未被踢出队伍,获取下一只猴子编号
if($monkey[$i] > 0) continue;
//若元素值为0,则猴子已被踢出队伍,进而循环取下一只猴子编号
if($monkey[$i] == 0)
{
//取下一只猴子编号
for($k= $i; $k< $len; $k++)
{
//值为0,编号加1
if($monkey[$k] == 0) $i++;
//否则,编号已取得,退出
if($monkey[$k] > 0) break;
}
}
//若编号大于猴子个数,则从第0只猴子开始遍历(数组指针归零)
//步骤同上
if($i == $len) $i = 0;
//同上步骤,获取下一只猴子编号
if($monkey[$i] == 0)
{
for($k= $i; $k< $len; $k++)
{
if($monkey[$k] == 0) $i++;
if($monkey[$k] > 0) break;
}
}
}
}
}
//猴子个数
$n = 10;
//踢出队伍的编号间隔值
$m = 3;
//调用猴王获取函数
getKingMokey($n, $m);
?>
运行结果:
036927185104
用递归的算法
$monkeys = array(1 , 2 , 3 , 4 , 5 , 6 , 7, 8 , 9 , 10); //monkey的编号
$m = 4; //数到第几只的那只猴子被踢出去
function killMonkey($monkeys , $m , $current = 0){
$number = count($monkeys);
$num = 1;
if(count($monkeys) == 1){
echo $monkeys[0]."成为猴王了";
return;
}
else{
while($num++ < $m){
$current++ ;
$current = $current%$number;
}
echo $monkeys[$current]."的猴子被踢掉了
";
array_splice($monkeys , $current , 1);
killMonkey($monkeys , $m , $current);
}
}
killMonkey($monkeys , $m);
运行结果:
4的猴子被踢掉了
8的猴子被踢掉了
2的猴子被踢掉了
7的猴子被踢掉了
3的猴子被踢掉了
10的猴子被踢掉了
9的猴子被踢掉了
1的猴子被踢掉了
6的猴子被踢掉了
5成为猴王了
希望本文所述对大家PHP程序设计有所帮助。
php五只猴子分椰子_PHP实现的猴王算法(猴子选大王)示例相关推荐
- php五只猴子分椰子_(笔试题)分椰子
题目: 话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有棵椰子树,还有一只猴子! 大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉 ...
- php五只猴子分椰子_tubes五只雪茄_phillies雪茄五只装
文章摘要:tubes五只雪茄_phillies雪茄五只装,tubes五只雪茄,tubes雪茄多少钱,丹纳曼雪茄价格表,丹纳曼雪茄5. 第1条:tubes五只雪茄,TUBES这个牌子的雪茄多少钱? [最 ...
- java猴子分桃_java编写程序五只猴子分海滩上的一堆桃子答案
下面给大家分享的编程题是和猴子分桃有关的内容,那么这道题目是怎样的呢?这道题目又应该如何来做解答?一起来看看具体的题目内容和答案吧. 首先我们要来看一下问题,下面是具体的题目. 一.题目 现在,在海滩 ...
- 猴子选大王 (20 分)
7-10 猴子选大王 (20 分) 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧 ...
- 7-28 猴子选大王 (20 分)
猴子选大王 (20 分) 一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只 ...
- PTA 7-28 猴子选大王 (20 分)-gcc编译器过不了?
综述: 猴子选大王这道题看着好像挺简单的,但是实际做起来也不容易.猴子的编号从1到N,然后报数,首先面对的第一个问题是怎么存储这些个猴子,我最开始想用链表,因为链表删除数据容易点,而数组要是删除中间的 ...
- PTA基础题目集 7-28 猴子选大王 (20 分)
一群猴子要选新猴王.新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号.从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数.如此不 ...
- php面试 猴子大王,php猴子选大王问题解决方法,猴子大王_PHP教程
php猴子选大王问题解决方法,猴子大王 本文实例讲述了php猴子选大王问题解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数 ...
- (循环练习题) 五只猴子分桃子
题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...
最新文章
- html显示数据库图片django,django将图片上传数据库后在前端显式的方法
- CentOS7下搭建Nextcloud13.0.5
- 延迟加载图片并监听图片加载完成
- 邮件防伪SPF,反垃圾邮件
- linux 哪个进程在使用串口_Linux内核的整体架构
- 5月19-20日的上海 来一次纯粹的WebRTC之旅
- c#简单自定义异常处理日志辅助类
- [bzoj 2726] 任务安排 (斜率优化 线性dp)
- VUE:EventHub
- 互联生活:业务模式聚焦
- scala java抽象理解_scala – 抽象覆盖如何在Java代码方面起作用?
- 如何修改云服务器连接密码错误,如何修改云服务器连接密码
- 第三方服务--短信接口
- 初级产品经理的日常工作流程汇总
- php 制作简易论坛,Dreamweaver打造PHP网站之简易论坛教程
- [js高手之路]html5 canvas动画教程 - 跟着鼠标移动消失的一堆炫彩小球
- JMokit中的@Mocked与@Injectable区别
- 记一次收到QQ邮箱钓鱼邮件经历
- 人不是因为有面子才牛逼,而是因为变牛逼才有面子
- Python、Pycharm、Django及各插件安装经验汇总