1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP经典题:百钱百鸡问题(穷举算法)

作者:用户 来源:互联网 时间:2017-12-01 11:59:23

算法问题经典钱百鸡

PHP经典题:百钱百鸡问题(穷举算法) - 摘要: 本文讲的是PHP经典题:百钱百鸡问题(穷举算法),百钱百鸡问题:已知:公鸡5元一只,母鸡3元一只,小鸡一元3只现用100元钱买了100只鸡,问:公鸡母鸡小鸡各几只。--请考虑尽可能高效的方法 思路:如果有0只公鸡,0只母鸡,1只小鸡,数量是100吗。价钱是100吗。 否如果有0只公鸡,0只

百钱百鸡问题:已知:公鸡5元一只,母鸡3元一只,小鸡一元3只现用100元钱买了100只鸡,问:公鸡母鸡小鸡各几只。--请考虑尽可能高效的方法 思路:如果有0只公鸡,0只母鸡,1只小鸡,数量是100吗。价钱是100吗。 否如果有0只公鸡,0只母鸡,2只小鸡,数量是100吗。价钱是100吗。 否如果有0只公鸡,0只母鸡,3只小鸡,数量是100吗。价钱是100吗。 否......如果有0只公鸡,0只母鸡,100只小鸡,数量是100吗。价钱是100吗。 否如果有0只公鸡,1只母鸡,1只小鸡,数量是100吗。价钱是100吗。 否如果有0只公鸡,1只母鸡,2只小鸡,数量是100吗。价钱是100吗。 否......如果有0只公鸡,1只母鸡,100只小鸡,数量是100吗。价钱是100吗。 否如果有0只公鸡,2只母鸡,1只小鸡,数量是100吗。价钱是100吗。 否......如果有100只公鸡,100只母鸡,0只小鸡,数量是100吗。价钱是100吗。 否如果有100只公鸡,100只母鸡,1只小鸡,数量是100吗。价钱是100吗。 否如果有100只公鸡,100只母鸡,2只小鸡,数量是100吗。价钱是100吗。 否......这就叫做:穷举思想 (就是将所以可能的情况挨个去测试) PHP代码: echo "<p>原始思路:</p>";$count = 0;for($gongji = 0; $gongji <= 100; ++$gongji) {for($muji = 0; $muji <= 100; ++$muji) {for($xiaoji = 0; $xiaoji <= 100; ++$xiaoji) {if($gongji*5 + $muji*3 + $xiaoji/3 == 100 && $gongji + $muji + $xiaoji == 100) {echo "<br />公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";}$count++; //计算次数}}}echo "<br />次数:$count";echo '<br />';echo "<p>代码优化一:</p>"; $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) {echo "<br />公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";}$count++; //计算次数}}echo "<br />次数:$count"; echo '<br />';echo "<p>代码优化二:</p>"; $count = 0;for($gongji = 0; $gongji <= 100/5; ++$gongji) { //根据总价:则公鸡最多有100/5只for($muji = 0; $muji <= 100/3; ++$muji) { //根据总价:则母鸡最多有100/3只$xiaoji = 100 - $gongji - $muji;if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {echo "<br />公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";}$count++; //计算次数}}echo "<br />次数:$count";  echo '<br />';echo "<p>代码优化三:</p>"; $count = 0;for($gongji = 0; $gongji <= 100/5; ++$gongji) { //根据总价:则公鸡最多有100/5只for($muji = 0; $muji <= (100-$gongji*5)/3; ++$muji) { //根据总价与公鸡所花的钱:则母鸡最多有(100-$gongji*5)/3只$xiaoji = 100 - $gongji - $muji;if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {echo "<br />公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";}$count++; //计算次数}}echo "<br />次数:$count";  echo '<br />';echo "<p>代码优化四:</p>"; $count = 0;for($gongji = 0; $gongji <= 100/5; ++$gongji) { //根据总价:则公鸡最多有100/5只for($muji = 0; $muji <= (100-$gongji*5)/3; ++$muji) { //根据总价与公鸡所花的钱:则母鸡最多有(100-$gongji*5)/3只$xiaoji = 100 - $gongji - $muji;if($xiaoji % 3 != 0) {continue;} //考虑小鸡的价钱,则小鸡的数量只能被3整除才合理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 只;小鸡有 84 只;次数:1030301代码优化一: 公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;次数:10201代码优化二: 公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;次数:714代码优化三: 公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;次数:364代码优化四: 公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;次数:121 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法 , 问题 , 经典 钱百鸡 ,以便于您获取更多的相关知识。