This article describes the example of php Joseph's problem solving algorithm for executing prisoners. Share it with everyone for your reference. The specific analysis is as follows:
In ancient times, a judge wanted to sentence IV prisoners to death. He had a ridiculous law that made the prisoners stand in a circle, counting from the sth person, and every time they reached the Dth person, they would be pulled out and executed, and then count D more , and then pull them out and execute them... until the last one left can be pardoned.
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);
I hope this article will be helpful to everyone’s PHP programming design.