Loading

百钱百鸡 最傻最蠢的算法示例

<?php
// 要求:100块钱买100只鸡,其中公鸡5元一只,母鸡3元一只,小鸡1元三只
$count = 0;
for($gongji=0;$gongji<=100;$gongji++)  //控制行数
{
    for($muji=0;$muji<=100;$muji++)  
    {
        for($xiaoji=0;$xiaoji<=100;$xiaoji++)  
        {
            if($gongji + $muji + $xiaoji == 100 && $gongji * 5 + $muji * 3 + $xiaoji / 3 == 100)//鸡数100,钱数100
            {
                echo '公鸡是:'.$gongji.'只','母鸡是:'.$muji.'只','小鸡是:'.$xiaoji.'只';
                echo "<br>";
            }
            $count++;

        }             
    }
}
echo $count;//输出循环的次数 1030301次
?>

这是最蠢的算法,想优化吗!

这里是优化后:

<?php
// 要求:100块钱买100只鸡,其中公鸡5元一只,母鸡3元一只,小鸡1元三只
$count = 0;
for($gongji=0;$gongji<=100;$gongji++)  //控制行数
{
    for($muji=0;$muji<=100;$muji++)  
    {
        $xiaoji = 100 - $gongji - $muji;
        
            if($gongji * 5 + $muji * 3 + $xiaoji / 3 == 100)//鸡数100,钱数100
            {
                echo '公鸡是:'.$gongji.'只','母鸡是:'.$muji.'只','小鸡是:'.$xiaoji.'只';
                echo "<br>";
            }
            $count++;
           
    }
}
echo $count;//输出循环的次数 10201次
?>

循环次数只有1w次左右.去掉一个for()和一个条件. 其实还能优化 这里我就不做了.谢谢参观

posted @ 2019-07-09 20:03  mingBolg  阅读(166)  评论(0编辑  收藏  举报