PHP算法之猴子选大王的游戏
时间:2011-06-15
来源:互联网
猴子选大王游戏
一群猴子排成一圈.按1,2,...,n依次排号.
然后从第一只开始数,数到第m只,把它踢出圈,从它后面再开始数.
再数到第m只,把它踢出去..如此不停的进行下去.
直到最后只剩下一只猴子为止,那只猴子就叫大王.
要求编程模拟此过程,输入m,n. 输出最后那个大王的编号.
复制代码
一群猴子排成一圈.按1,2,...,n依次排号.
然后从第一只开始数,数到第m只,把它踢出圈,从它后面再开始数.
再数到第m只,把它踢出去..如此不停的进行下去.
直到最后只剩下一只猴子为止,那只猴子就叫大王.
要求编程模拟此过程,输入m,n. 输出最后那个大王的编号.
- function monkeyKing($n, $m) {
- $monkeys = range(1, $n);
- $i = 0; // 取出时候的坐标
- $z = 0; // 数到M的时候停
- while(($mNum = count($monkeys)) > 1) {
- if($i == $mNum) {
- $i = 0; // 圈
- }
- $z++;
- $i++;
- if($z == $m) {
- array_splice($monkeys, --$i, 1);
- $z = 0; // 归零
- }
- }
- return($monkeys[0]);
- }
作者: howk 发布时间: 2011-06-15
/*
* @param $n 总数
* @param $m 当报数到 m 时,m出列
* @return 最后剩下的数字
*/
function yuesefu($n,$m) {
$r=0;
for($i=2; $i<=$n; $i++) {
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(yuesefu(3,3));
?>
* @param $n 总数
* @param $m 当报数到 m 时,m出列
* @return 最后剩下的数字
*/
function yuesefu($n,$m) {
$r=0;
for($i=2; $i<=$n; $i++) {
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(yuesefu(3,3));
?>
作者: teng19820 发布时间: 2011-06-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28