This article mainly introduces PHP Joseph’s Problem Solving Algorithm for Execution of Prisoners. It analyzes the implementation and implementation of Joseph’s Problem in PHP with examples. Application skills have certain reference value. Friends in need can refer to it
The example in this article describes the algorithm for solving the Joseph problem in PHP about 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.
?
3 4 513 14
<🎜>15<🎜>
<🎜>16<🎜>
<🎜>17<🎜>
<🎜>18<🎜>
<🎜>19<🎜>
<🎜>20<🎜>
<🎜>21<🎜>
<🎜>22<🎜>
<🎜>23<🎜>
<🎜>24<🎜>
<🎜>25<🎜>
<🎜>26<🎜>
<🎜>27<🎜>
<🎜>28<🎜>
<🎜>29<🎜>
<🎜>30<🎜>
<🎜>31<🎜>
<🎜>32<🎜>
|
<🎜> <🎜>function getNum($n,$m){<🎜> <🎜>//Used to store all numbers into array initialization<🎜> <🎜>$a = array();<🎜> <🎜>//Traverse and store in array<🎜> <🎜>for($i=1;$i<=$n;$i ){<🎜> <🎜>$a[$i] = $i;<🎜> <🎜>}<🎜> <🎜>//The pointer returns to 0<🎜> <🎜>reset($a);<🎜> <🎜>while(count($a)>1){ //If the item in the array is greater than 1, continue to loop and remove elements //Elimination rules for($j=1;$j<=$m;$j ){ //If the last item of the array is not reached if(next($a)){ if($j==$m){ //Delete m items unset($a[array_search(prev($a),$a)]); } }else{ //If next does not exist, then the pointer returns to 0 reset($a); if($j==$m){ unset($a[array_search(end($a),$a)]); reset($a); } } } } return current($a); } echo getNum(5,3); |