Home > Article > Backend Development > Summary of methods to implement Joseph's problem in PHP_PHP tutorial
This article mainly introduces the method of implementing the Joseph problem in PHP. The example summarizes two common techniques for realizing the Joseph problem, which have certain For reference value, friends in need can refer to it
The example in this article summarizes the method of implementing Joseph's problem in PHP. Share it with everyone for your reference. The specific analysis is as follows:
A group of monkeys line up in a circle and are numbered 1, 2,...,n. Then start counting from the 1st one, count to the mth one, kick it out of the circle, start counting from behind it, count to the mth one, kick it out..., and continue in this way. Until there is only one monkey left, that monkey is called the king. Programming is required to simulate this process, input m, n, and output the number of the last king.
Analysis:
The Joseph Ring is a mathematical application problem: it is known that n people (represented by numbers 1, 2, 3...n respectively) are sitting around a round table. Start counting from the person numbered k, and the person who counts to m comes out of the queue; the next person starts counting from 1, and the person who counts to m comes out of the queue again; repeat this pattern until around the round table All the people came out.
Method 1:
?
3 4
5
6
9 10 11 |
function getLeader($n,$m) {
$res=0;
for($i=2; $i<=$n; $i ) {
$res=($res $m)%$i;
}
return $res 1;
}
<🎜>$leader = getLeader(13,34);<🎜>
<🎜>echo $leader;<🎜>
<🎜>?>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<🎜>//Define function<🎜>
<🎜>function getKing($monkeys , $m , $current = 0){<🎜>
<🎜>$number = count($monkeys);<🎜>
<🎜>$num = 1;<🎜>
<🎜>if(count($monkeys) == 1){<🎜>
<🎜>echo 'The monkey numbered '.$monkeys[0].' has become the monkey king!';
return;
}else{
while($num < $m){<🎜>
<🎜>$current ;<🎜>
<🎜>$current = $current%$number;<🎜>
<🎜>}<🎜>
<🎜>echo "The monkey numbered ".$monkeys[$current]." was kicked out... "; array_splice($monkeys , $current , 1); getKing($monkeys , $m , $current); } } $n=13; //Total number of monkeys $m = 34; //The monkey at which number is kicked out $monkeys = range(1,$n); //Put the monkey number into the array getKing($monkeys, $m); //Call function ?> |