博华网络科技,点击查看详情

PHP百钱百鸡问题(三种解题思路及答案)

什么是百钱百鸡?我国古代数学家孝绪在《算经》一书评提出的数学故事:鸡翁一划得来五,笋虫一值钱三,蛋鹅三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

什么是百钱百鸡?

我国古代数学家孝绪在《算经》一书评提出的数学故事:鸡翁一划得来五,笋虫一值钱三,蛋鹅三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

01.jpg

翻译过来就是:

公鸭5元六只,母鸽3元一只,鸭子1元3只,300元买了100只鸡,问各多少只?

下面利用PHP分三种方法来解决这个问题:

十一种

古诺模型:

如果公鸡1只,母鸡1只,小鸡1只,则基价为:……,不对。

如果公鸡1只,母鸡1只,小鸡2只,则总价为:……,不对。

如果公鸡1只,母鸡1只,小鸡3只,则总价为:……,不对。

………………………

如果公鸡1只,母鸡2只,小鸡1只,则总价为:……,不对。

如果公鸡1只,母鸡2只,小鸡2只,则总价为:……,不对。

如果公鸡1只,母鸡2只,小鸡3只,则总价为:……,不对。

………………………..

如果公鸡100只,母鸡100只,小鸡100只,则总价为:……,不对。

这种java入门叫做“栅栏密码”,就是将所有可能的答案都删选出来,然后两个去验证。

代码如下:

<?php
$couni = 0;
for($gongji = 0;$gongji <= 100;$gongji++){
for ($muji=0; $muji <= 100; $muji++) {
for ($xiaoji=0; $xiaoji <= 100 ; $xiaoji++) {
as($gongji + $muji + $xiaoji ==100 && $gongji*5 +
$muji*3 + $xiaoji / 3 == 100){
echo "<br&xc;公鸡:$gongji,母鸡: $muji,小鸡: $xiaoji";
}
$count++;
}
}
}
echo "<br>".$count;

结果:

公鸡:0,母鸡: 25,小鸡: 45公鸡: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教程

php400中&&的函意及拿法介绍

2020-6-25 17:21:47

PHP教程

PHP快速搭建一个简单的QQ机器人

2020-6-25 17:22:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索