美文网首页
PHP解决约瑟夫环问题

PHP解决约瑟夫环问题

作者: 金星show | 来源:发表于2018-12-07 14:43 被阅读0次
    //方法一
    function joseph_ring($n,$m){
        $arr = range(1,$n);
        $i = 0;
        while(count($arr)>1){
            $i=$i+1;
            $head = array_shift($arr);//先拿出来做判断,符合删除,不符合插入后面。保证环
            if($i%$m != 0){ //如果不是则重新压入数组
                array_push($arr,$head);//往后面补,代表报过数
            }
        }
        return $arr[0];
    }
    // 方法二
    function joseph_ring2($n,$m){
        $arr = range(1,$n);
        $i = 1;
        while(count($arr)>1){
            foreach($arr as $k=>$v){
                  if($i == $m){
                        unset($arr[$k]);
                        $i = 1;
                  }else{ 
                        $i += 1;    
                  }
            }
        }
        return array_values($arr)[0];
    }
    //方法三
    function joseph_ring3($n,$m){
        $r = 0;
        for($i=2;$i<=$n;$i++){
            $r = ($r+$m)%$i;
        }
        return $r + 1;
    }
    echo "<br/>".joseph_ring(60,5)."<br/>";
    echo "<br/>".joseph_ring2(60,5)."<br/>";
    

    相关文章

      网友评论

          本文标题:PHP解决约瑟夫环问题

          本文链接:https://www.haomeiwen.com/subject/bnmigxtx.html