Welcome 微信登录

首页 / 网页编程 / PHP / php约瑟夫问题解决关于处死犯人的算法

本文实例讲述了php约瑟夫问题解决关于处死犯人的算法。分享给大家供大家参考。具体分析如下:
古代某法官要判决IV个犯人的死刑,他有一条荒唐的法律将犯人站成一个圆圈,从第s个人开始数起,每到第D个人就拉出来处死,然后再数D个,再拉出来处决…… 直到剩下最后一个可以赦免.
function getNum($n,$m){//用于把所有的数存到数组初始化$a = array();//遍历,存入数组for($i=1;$i<=$n;$i++){$a[$i] = $i;}//指针归0reset($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不存在,那么指针归0reset($a);if($j==$m){unset($a[array_search(end($a),$a)]);reset($a);}} }}return current($a);}echo getNum(5,3);
希望本文所述对大家的php程序设计有所帮助。