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


    <?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()和一个条件. 其实还能优化 这里我就不做了.谢谢参观

  • 相关阅读:
    C# 多线程总结 异常处理 线程取消 锁(lock)
    C# sync/async 同步/异步
    C# Parallel 多线程并发
    C# Task TaskFactory 异步线程/异步任务
    C# ThreadPool 线程池
    Nginx基础配置
    Nginx配置通用语法
    Nginx进程间的关系
    Nginx命令行控制
    Flask框架02(路由)
  • 原文地址:https://www.cnblogs.com/xm666/p/11160115.html
Copyright © 2020-2023  润新知