• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

php解决约瑟夫问题-关于处死犯人的算法

PHP 水墨上仙 1325次浏览

古代某法官要判决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解决约瑟夫问题-关于处死犯人的算法
喜欢 (0)
加载中……