이 글의 예시는 Joseph의 문제를 PHP로 구현하는 방법을 요약한 것입니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
1, 2,...,n이라는 번호가 붙은 원숭이 무리가 원을 그리며 줄을 섭니다. 그런 다음 첫 번째부터 세기 시작하고, m 번째까지 세고, 원 밖으로 쫓아내고, 뒤에서 세기 시작하고, m 번째까지 세고, 쫓아내고... 그리고 이 방법으로 계속합니다. 원숭이 한 마리만 남았는데, 그 원숭이를 왕이라 부른다. 이 과정을 시뮬레이션하여 m, n을 입력하고 마지막 왕의 수를 출력하는 프로그래밍이 필요합니다.
분석:
요셉 반지는 수학적 응용 문제입니다. n명의 사람(각각 숫자 1, 2, 3...n으로 표시)이 원탁 주위에 앉아 있다는 것이 알려져 있습니다. k라는 사람부터 세기 시작하고, m까지 센 사람이 대기열에서 나오고, 다음 사람이 1부터 세기 시작하고, m까지 센 사람이 다시 대기열에서 나옵니다. 테이블 사람들이 다 나왔어요.
방법 1:
<?php 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; ?>
방법 2:
<?php //定义函数 function getKing($monkeys , $m , $current = 0){ $number = count($monkeys); $num = 1; if(count($monkeys) == 1){ echo '<font color="red">编号为'.$monkeys[0].'的猴子成为猴王了!</font>'; return; }else{ while($num++ < $m){ $current++ ; $current = $current%$number; } echo "编号为".$monkeys[$current]."的猴子被踢掉了...<br/>"; array_splice($monkeys , $current , 1); getKing($monkeys , $m , $current); } } $n=13; //总共猴子数目 $m = 34; //数到第几只的那只猴子被踢出去 $monkeys = range(1,$n); //将猴子编号放入数组中 getKing($monkeys , $m); //调用函数 ?>
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.