php_php 기술로 Joseph의 문제를 구현하는 방법 요약

WBOY
풀어 주다: 2016-05-16 20:19:33
원래의
887명이 탐색했습니다.

이 글의 예시는 Joseph의 문제를 PHP로 구현하는 방법을 요약한 것입니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

1, 2,...,n이라는 번호가 붙은 원숭이 무리가 원을 그리며 줄을 섭니다. 그런 다음 첫 번째부터 세기 시작하고, m 번째까지 세고, 원 밖으로 쫓아내고, 뒤에서 세기 시작하고, m 번째까지 세고, 쫓아내고... 그리고 이 방법으로 계속합니다. 원숭이 한 마리만 남았는데, 그 원숭이를 왕이라 부른다. 이 과정을 시뮬레이션하여 m, n을 입력하고 마지막 왕의 수를 출력하는 프로그래밍이 필요합니다.

분석:

요셉 반지는 수학적 응용 문제입니다. n명의 사람(각각 숫자 1, 2, 3...n으로 표시)이 원탁 주위에 앉아 있다는 것이 알려져 있습니다. k라는 사람부터 세기 시작하고, m까지 센 사람이 대기열에서 나오고, 다음 사람이 1부터 세기 시작하고, m까지 센 사람이 다시 대기열에서 나옵니다. 테이블 사람들이 다 나왔어요.

방법 1:

<&#63;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;
&#63;>
로그인 후 복사

방법 2:

<&#63;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);   //调用函数
&#63;>
로그인 후 복사

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿