首页后端开发PHPPHP百钱百鸡问题(三种解题思路及答案)

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

时间2024-02-02 02:41:03发布访客分类PHP浏览437
导读:收集整理的这篇文章主要介绍了PHP百钱百鸡问题(三种解题思路及答案),觉得挺不错的,现在分享给大家,也给大家做个参考。什么是百钱百鸡?我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,...
收集整理的这篇文章主要介绍了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只,则总价为:......,不对。

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

代码如下:

?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百钱百鸡问题(三种解题思路及答案)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP百钱百鸡问题(三种解题思路及答案)
本文地址: https://pptw.com/jishu/596253.html
API常用签名验证方法(PHP实现) PHP简单实现路由Route功能

游客 回复需填写必要信息