php面试题-猴子选大王算法实现

2019-11-12  本文已影响0人  MikeLue
<?php

/**
 * 猴子选大王
 * @param  [type] $data 猴子数据,默认值都为1,排查设为0, 例: [1,1,1,1,1,1]
 * @param  [type] $m    报数
 * @return [type]       猴子序号
 */
function selectKing($data, $m)
{
    $count   = $end   = count($data); //猴子个数
    $current = 0;
    $number  = 1;
    while ($count) {
        if ($data[$current] != 0) {
            //最后一个
            if ($count == 1) {
                break;
            }
            if ($number == $m) {
                $data[$current] = 0; //排除一个
                $number         = 1; //重新报数
                $count--;            //去掉一个
            } else {
                $number++; //继续报数
            }
        }

        //下一位
        $current++;
        if ($current == $end) {
            $current = 0;
        }
    }

    return $current + 1;
}

$data = [1, 1, 1, 1, 1, 1, 1];
var_dump(selectKing($data, 6));
上一篇下一篇

猜你喜欢

热点阅读