百钱百鸡 最傻最蠢的算法示例
<?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()和一个条件. 其实还能优化 这里我就不做了.谢谢参观