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

<?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));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容