이 기사의 예는 죄수 처형에 관한 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 프로그래밍 설계에 도움이 되기를 바랍니다.