资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

PHP百钱百鸡经典问题的源码-创新互联

什么是百钱百鸡?

我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

创新互联主营曲阳网站建设的网络公司,主营网站建设方案,成都app软件开发,曲阳h5重庆小程序开发公司搭建,曲阳网站营销推广欢迎曲阳等地区企业咨询

PHP百钱百鸡经典问题的源码

翻译过来就是:

公鸡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只,则总价为:......,不对。

这种编程思想叫做“穷举”,就是将所有可能的答案都罗列出来,然后挨个去验证。

代码如下:

公鸡:$gongji,母鸡: $muji,小鸡: $xiaoji";
}
$count++;
}
}
}
echo "
".$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 "
公鸡:$gongji,母鸡: $muji,小鸡: $xiaoji"; } $count++; } } echo "
".$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 "
公鸡:$gongji,母鸡: $muji,小鸡: $xiaoji"; } $count++; } } echo "
".$count;

结果:

公鸡:0,母鸡: 25,小鸡: 75公鸡:4,母鸡: 18,小鸡: 78公鸡:8,母鸡: 11,小鸡: 81公鸡:12,母鸡: 4,小鸡: 84364

总结:

直接用三重for循环是很容易想到的,但是三重循环的复杂度太大了,所以应该想到减少循环。直接把小鸡用总的鸡数减去公鸡和母鸡,就能减少一层循环,这样就能减少运行的时间,提高代码效率。

以上就是PHP百钱百鸡问题(三种解题思路及答案)的详细内容,更多请关注创新互联其它相关文章!


网站名称:PHP百钱百鸡经典问题的源码-创新互联
文章路径:http://cdkjz.cn/article/cddddc.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220