이 글은 주로 Joseph의 문제를 구현하는 방법을 소개합니다. 이 예제는 Joseph의 문제를 구현하는 두 가지 일반적인 기술을 요약한 것입니다. 도움이 필요한 친구들이 참고할 수 있습니다.
이 글의 예는 구현 방법을 요약한 것입니다. PHP 메소드에서 Joseph의 문제. 구체적인 분석은 다음과 같습니다.
원숭이 무리가 원을 그리며 줄을 서고 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 Joseph의 질문의 의미와 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!