zoukankan      html  css  js  c++  java
  • PHP版的猴子选大王算法

    猴子选大王

    这个算法可能是目前我看到的最简洁都算法吧,而且很好理解。它不同于其他算法,其他算法都是判断这个猴子能不能被选中,而他只是找出不能被选中的猴子,然后将其塞到数组模拟的环状队列中,参与下次选。

    <?php
    
    /**
     * 本题的重点是,如果猴子所在的位置数不能被m整除,那么这个猴子就不会被踢出,
     * 会参加下一轮的循环
     * @param $n int n个猴子参与
     * @param $m int 踢出第m个猴子
     * @return int
     */
    function getKing(int $n, int $m): int
    {
        $arr = range(1, $n);// 为n个猴子排序
        $i = 0;
        // 只剩一个猴子时返回,它就是王
        while (count($arr) > 1) {
            // 猴子的个数从1开始数
            if (($i + 1) % $m != 0) {// 如果猴子的编号不能被$m整除,就说明数m个数,它不会被数中
                array_push($arr, $arr[$i]);// 猴子移到数组尾部,参与下次数数
            }
            unset($arr[$i]);// 踢出这个猴子
            $i++;
        }
    
        return array_shift($arr);
    }
    
    echo(getKing(10, 4));
    
  • 相关阅读:
    内部类
    抽象类与接口
    多态
    继承
    封装
    创建对象的内存分析
    构造器
    面向对象 类与对象
    uniapp跳转
    uniapp-组件引用错误,仅支持 import 方式引入组件
  • 原文地址:https://www.cnblogs.com/arvintang/p/14514918.html
Copyright © 2011-2022 走看看