2020-04-28 食蕉问题 算法

2020-04-28  本文已影响0人  dongdog
image.png

实现

    function test2()
    {
        //香蕉堆数 和数量
        $piles = [3, 6, 7, 11 ,9 ,88,6 ];
//        $piles = [3, 9, 7, 11];
//        $piles = [3, 9, 7, 10, 15];
        //保安离开时间
        $H = 8;
        //总堆数
        $N = count($piles);
        //堆数大于小时 ,吃不完
        if ($N > $H) {
            var_dump('吃不完');die;
        }
        //最大速度不超过 每小时 吃掉最大一堆
        $max_k =  max($piles);
        for ($k = 1; $k <= $max_k; $k++) {
            //清零计时
            $j = 0;
            $sign = true;
            foreach ($piles as $key => $value) {
                //按最低速度吃完 向上取整
                $j += ceil($value / $k);
                //时间累积 超过保安离开时间$H
                if ($j > $H) {
                    $sign = false;
                    break;
                }
            }
            if ($sign == true && $j >= $H) {
                echo "速度{$k}个/每小时,计时{$j}小时";
                die;
            }
        }
        var_dump('error');
        die;
    }
上一篇 下一篇

猜你喜欢

热点阅读