博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
猴子排队算法
阅读量:4042 次
发布时间:2019-05-24

本文共 655 字,大约阅读时间需要 2 分钟。

一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

<?php
function yuesefu($n,$m) {
 
 
 
$r=0;
 
 
 
 
for($i=2;$i<=$n; $i++) {
 
 
 
 
 
 
$r=($r+$m)%$i;
 
echo $r.'<br />';
 
 
 
 
}
 
 
 
 
return $r+1;
}
echo yuesefu(10,4);
?>
这么个问题,你还用链表,不是舍近而求远吗....

燕十八老师说过PHP中的数组非常强大,什么链表,栈,队列,数组全搞定.

我用数组模拟了下,供你参数.

function king($n,$m) {

$monkey = range(1,$n);

$i = 0;

while(count($monkey) > 1) { // 只要猴子还大于1只

$i += 1; // 开始查数


$head = array_shift($monkey); // 把队头的猴子取出来


// 如果没数到m或m的倍数,则把该猴放尾部去.

if($i % $m != 0) {

array_push($monkey,$head);


}


return $monkey[0];

}


echo '剩余',king(6,3),'号猴子';


建议:用简单的工具解决复杂问题,别用复杂工具,把自己绕晕.....

转载地址:http://tpqdi.baihongyu.com/

你可能感兴趣的文章
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>