>  기사  >  백엔드 개발  >  PHP Joseph의 질문의 의미와 사용법

PHP Joseph의 질문의 의미와 사용법

墨辰丷
墨辰丷원래의
2018-06-12 10:39:221386검색

이 글은 주로 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 &#39;<font color="red">编号为&#39;.$monkeys[0].&#39;的猴子成为猴王了!</font>&#39;;
    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 방법

두 배열을 빼는 PHP 방법

연관 배열을 정렬하는 PHP 방법

위 내용은 PHP Joseph의 질문의 의미와 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.