猴子选大王 方法:递归 语言: php
关注:101 答案:3 手机版
解决时间 2021-01-16 00:06
提问者爱你又怎样
2021-01-15 08:05
最好详细介绍下公式 每个字母代表什么意思 公式是怎么一步一步推出来的
最佳答案
二级知识专家落日海湾
2021-01-15 09:24
function killMonkey($monkeys , $n , $current = 0){
$num = 1;
if(count($monkeys) == 1){
echo $monkeys[0]."成为猴王了";
return;
}
else{
for($num;$num
$current++;
}
echo $monkeys[$current]."的猴子被踢掉了
";
array_splice($monkeys , $current , 1);
var_dump($monkeys);
killMonkey($monkeys , $n , $current);
}
}
function KingMonkey($m,$n){
for($i=1 ;$i
$monkeys [] = $i ;
}
killMonkey($monkeys , $n );
}
KingMonkey(10,3);
?>
全部回答
1楼守給你的承諾
2021-01-15 11:06
一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。
约瑟夫算法
function king($m ,$n)
{
//构造数组,模拟猴子数量并排队
for($i=1 ;$i
$arr[] = $i ;
}
$i = 0 ; //设置数组指针
while(count($arr)>1)
//当数组元素个数大于1的时候
{
//遍历数组,判断当前猴子是否为出局序号,如果是则出局,否则放到数组最后
if(($i+1)%$n ==0) {
unset($arr[$i]) ;
} else {
array_push($arr ,$arr[$i]) ; //本轮非出局猴子放数组尾部
unset($arr[$i]) ; //删除
}
$i++ ;
}
return $arr ;
}
2楼 深知你是梦
2021-01-15 09:45
"; array_splice($monkeys , $current , 1); var_dump($monkeys); killmonkey($monkeys , $n , $current); } } function kingmonkey($m,$n){ for($i=1 ;$i
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看