>백엔드 개발 >PHP 튜토리얼 >Prisoners_php 실행을 위한 PHP Joseph 문제 해결 알고리즘 팁

Prisoners_php 실행을 위한 PHP Joseph 문제 해결 알고리즘 팁

WBOY
WBOY원래의
2016-05-16 20:19:35977검색

이 기사의 예는 죄수 처형에 관한 PHP의 Joseph 문제를 해결하는 알고리즘을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

고대에 판사는 IV형 죄수에게 사형을 선고하고 싶었는데, 죄수들을 s번째 사람부터 세어 원을 그리며 서게 하고, D번째 사람이 나올 때마다 끌어당기는 말도 안되는 법이 있었습니다. 꺼내서 처형하고, D를 더 세고, 꺼내서 처형하고... 마지막 한 마리가 용서받을 때까지.

function getNum($n,$m){
  //用于把所有的数存到数组初始化
  $a = array();
  //遍历,存入数组
  for($i=1;$i<=$n;$i++){
    $a[$i] = $i;
  }
  //指针归0
  reset($a);
  while(count($a)>1){
    //如果数组中项大于1,继续循环剔除元素
    //剔除规则
    for($j=1;$j<=$m;$j++){
        //如果没有达到数组的最后项
      if(next($a)){
        if($j==$m){
          //删除m项
          unset($a[array_search(prev($a),$a)]);
        }
      }else{
        //如果next不存在,那么指针归0
      reset($a);
      if($j==$m){
        unset($a[array_search(end($a),$a)]);
        reset($a);
      }
    }
   }
  }
  return current($a);
}
echo getNum(5,3);

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

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