Home  >  Article  >  Backend Development  >  Summary of methods to implement Joseph's problem in PHP_PHP tutorial

Summary of methods to implement Joseph's problem in PHP_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:00:38926browse

A summary of how to implement the Joseph problem in PHP

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:

?

1

2

3

4

5

6

7

8

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

//定义函数

function getKing($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);

getKing($monkeys , $m , $current);

}

}

$n=13; //总共猴子数目

$m = 34; //数到第几只的那只猴子被踢出去

$monkeys = range(1,$n); //将猴子编号放入数组中

getKing($monkeys , $m); //调用函数

?>

7 8

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;<🎜> <🎜>?>
Method 2: ?
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 ?>
I hope this article will be helpful to everyone’s PHP programming design. http://www.bkjia.com/PHPjc/973136.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/973136.htmlTechArticleSummary of the method of realizing the Joseph problem in PHP This article mainly introduces the method of realizing the Joseph problem in PHP. Two examples are summarized. A common technique for realizing Joseph's problem, with certain reference...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn