首页 > 代码库 > 约瑟夫问题(一堆数据每隔几循环取出)

约瑟夫问题(一堆数据每隔几循环取出)

function question($arr) {
    global $outStr;
    global $b;
    foreach($arr as $key=>$val) {
        if(($key+1)% $b == 0) {
            unset($arr[$key]);
            array_push($outStr,$val);
            } else {
            unset($arr[$key]);
            array_push($arr,$val);
            }            
        }
    return $arr;    
}
//约瑟夫问题
$a = array(‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘,‘l‘,‘m‘,‘n‘,‘o‘,‘p‘,‘q‘,‘r‘,‘s‘,‘t‘,‘u‘,‘v‘,‘w‘,‘x‘,‘y‘,‘z‘);//传入的数据
$b = 3;//每隔几个取数据
$outStr=array();
while (count($a)>=3) {
    $a=question($a);    
}
foreach($a as $key => $val) {
    array_push($outStr,$val);
}
var_dump($outStr);

技术分享

约瑟夫问题(一堆数据每隔几循环取出)