甚么是百钱百鸡?
我国现代数学家张丘建正在《算经》一书中提出的数学识题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各多少?
翻译过去就是:
公鸡5元一只,母鸡3元一只,小鸡1元3只,100元买了100只鸡,问各几何只?
上面行使PHP分三种办法来处理这个成绩:
第一种
假定:
假如公鸡1只,母鸡1只,小鸡1只,则总价为:......,不合错误。
假如公鸡1只,母鸡1只,小鸡2只,则总价为:......,不合错误。
假如公鸡1只,母鸡1只,小鸡3只,则总价为:......,不合错误。
...........................
假如公鸡1只,母鸡2只,小鸡1只,则总价为:......,不合错误。
假如公鸡1只,母鸡2只,小鸡2只,则总价为:......,不合错误。
假如公鸡1只,母鸡2只,小鸡3只,则总价为:......,不合错误。
.............................
假如公鸡100只,母鸡100只,小鸡100只,则总价为:......,不合错误。
这类编程思维叫做“穷举”,就是将一切可能的谜底都列举进去,而后挨个去验证。
代码以下:
<?php $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){ echo "<br>公鸡:$gongji,母鸡: $muji,小鸡: $xiaoji"; } $count++; } } } echo "<br>".$count;
后果:
公鸡:0,母鸡: 25,小鸡: 75公鸡:4,母鸡: 18,小鸡: 78公鸡:8,母鸡: 11,小鸡: 81公鸡:12,母鸡: 4,小鸡: 841030301
第二种
代码以下
$count = 0; for($gongji = 0;$gongji <= 100 / 5;$gongji++){ for ($muji=0; $muji <= 100 / 3; $muji++) { $xiaoji = 100 - $gongji - $muji; if($gongji*5 + $muji*3 +$xiaoji / 3 == 100){ echo "<br>公鸡:$gongji,母鸡: $muji,小鸡: $xiaoji"; } $count++; } } echo "<br>".$count;
后果:
公鸡:0,母鸡: 25,小鸡: 75公鸡:4,母鸡: 18,小鸡: 78公鸡:8,母鸡: 11,小鸡: 81公鸡:12,母鸡: 4,小鸡: 84714
第三种
代码以下
$count = 0; for($gongji = 0;$gongji <= 100 / 5;$gongji++){ for ($muji=0; $muji <= (100-$gongji*5) / 3; $muji++) { $xiaoji = 100 - $gongji - $muji; if($gongji*5 + $muji*3 +$xiaoji / 3 == 100){ echo "<br>公鸡:$gongji,母鸡: $muji,小鸡: $xiaoji"; } $count++; } } echo "<br>".$count;
后果:
公鸡:0,母鸡: 25,小鸡: 75公鸡:4,母鸡: 18,小鸡: 78公鸡:8,母鸡: 11,小鸡: 81公鸡:12,母鸡: 4,小鸡: 84364
总结:
间接用三重for轮回是很容易想到的,然而三重轮回的复杂度太年夜了,以是应该想到缩小轮回。间接把小鸡用总的鸡数减去公鸡以及母鸡,就能缩小一层轮回,这样就能缩小运转的工夫,进步代码效率。
以上就是PHP百钱百鸡成绩(三种解题思绪及谜底)的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 百钱百鸡
抱歉,评论功能暂时关闭!