百钱百鸡问题:

已知:公鸡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 "

原始思路:

";

$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 "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";

}

$count++;//计算次数

}

}

}

echo "
次数:$count";

echo '
';

echo "

代码优化一:

";

$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 "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";

}

$count++;//计算次数

}

}

echo "
次数:$count";

echo '
';

echo "

代码优化二:

";

$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 "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";

}

$count++;//计算次数

}

}

echo "
次数:$count";

echo '
';

echo "

代码优化三:

";

$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 "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";

}

$count++;//计算次数

}

}

echo "
次数:$count";

echo '
';

echo "

代码优化四:

";

$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 "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";

}

$count++;//计算次数

}

}

echo "
次数:$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

php公鸡五钱一只,PHP经典题:百钱百鸡问题(穷举算法)相关推荐

  1. 百钱百鸡php穷举法,PHP经典题:百钱百鸡问题(穷举算法)

    PHP经典题:百钱百鸡问题(穷举算法) 百钱百鸡问题: 已知:公鸡5元一只,母鸡3元一只,小鸡一元3只 现用100元钱买了100只鸡,问:公鸡母鸡小鸡各几只? --请考虑尽可能高效的方法 思路: 如果 ...

  2. 要求用 100 元买 100 只鸡,其中公鸡五元一只,母鸡三元一只,小鸡 1 元三只,规定每种至少买一 只

    要求用 100 元买 100 只鸡,其中公鸡五元一只,母鸡三元一只,小鸡 1 元三只,规定每种至少买一 只 public static void main(String[] args) {for(in ...

  3. 公鸡3块钱1只,母鸡5块钱1只,小鸡1块钱3只,用100块买100只鸡,一共多少种买法,分别是什么?

    公鸡3块钱1只,母鸡5块钱1只,小鸡1块钱3只,用100块买100只鸡,一共多少种买法,分别是什么? //2.公鸡3块钱1只,母鸡5块钱1只,小鸡1块钱3只,用100块买100只鸡,一共多少种买法,分 ...

  4. 【C语言基础练习】百钱买百鸡问题。母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只?

    百钱买百鸡问题.母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只? 1 #include<stdio.h>2 int main()3 {4 int ...

  5. 【跳出for循环嵌套】公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱。问:用m文钱买m只鸡,公鸡、母鸡、小鸡各买多少只?并输出最小购买公鸡的数,并增加无解答案。

    此题是百元买百鸡(C)的升级版 1.增加了用m文钱买m只鸡的要求,解决这个问题我们只需添加一个scanf函数即可. 2.输出最小可购买公鸡的数. 3.增加无解答案. 主要思路是用枚举法做,就是多个fo ...

  6. java嵌套循环例子:假定公鸡5元钱1只,母鸡3元钱1只,小鸡1元钱3只。现在有100元钱要求买100只鸡,请编程列出所有可能的购鸡方案。

    这是一个典型的for()循环嵌套问题,下面的代码运用的三重for循环,分别从0开始直到达到最大的鸡的数目,在这个过程中通过不断的循环来寻找合适条件的解.假定i为公鸡数(i≤20),j为母鸡数(j≤33 ...

  7. 2.(C语言)百钱白鸡问题:100元钱买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只?

    思路:母鸡和公鸡很好理解,主要是小鸡要绕下脑子,用100-母鸡-公鸡 =小鸡. 一定要除以3.0 不然 他会  舍去或者加上1 答案就不正确了. ps:感谢大佬提醒 刚学不久 希望多多指导 谢谢 #i ...

  8. html中js计算百钱百鸡,JS经典案例之百钱百鸡

    今天我们来回顾一下JS的经典案例之百钱百鸡 题目 公鸡5元钱一只,母鸡3元钱一只,小鸡3只一元钱,用100元钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100元钱 ...

  9. Java经典算法——百钱百鸡

    题目: 公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,用100文钱买100只鸡,可以怎么买? public class BQBJ {public static void main(String[] ...

  10. ZZULIOJ 1074:百钱买百鸡

    百钱买百鸡 题目描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡.母鸡.小鸡各买多少只? 本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡, ...

最新文章

  1. NeurIPS 2020 :新一代算法“鉴黄师”诞生,中科院计算所研究生一作
  2. 微服务等于Spring Cloud?了解微服务架构和框架
  3. 《神探tcpdump第四招》-linux命令五分钟系列之三十八
  4. 名词用作动词举例_日语动词修饰名词的形式
  5. Linux驱动编程 step-by-step (二) 简单字符设备驱动
  6. linux精简、备份还原、iso文件、批量安装?
  7. rpm | 升级软件包
  8. ArrayQueue详解(待解决)
  9. element-ui 解决 table 里包含表单验证的问题!
  10. 一个基于DataTable的后台框架的实现
  11. 解压.tar.bz2文件出现错误
  12. Chrome浏览器解决主页被劫持的问题
  13. GATK使用方法详解(原始数据的处理)
  14. Python3使用SMTP协议发送电子邮件
  15. python 封包发包_python中封包建立过程实例
  16. 台式机+笔记本的扩展模式+远程登录设置
  17. mc服务器物品给予,我的世界网易版给予物品指令1.12谢谢
  18. 免费ofd在线转PDF
  19. 读书笔记:《浪潮之巅:下》
  20. 二维图形的基本变换与裁剪的变换矩阵

热门文章

  1. Matrices(矩阵)
  2. 你总觉得你男朋友在敷衍你
  3. 看山不是山,看水不是水
  4. 转:人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水...
  5. Taylor’s Formula - 泰勒公式
  6. 无刷直流电动机矢量控制(五)——开环调速原理(方波形式)
  7. 知名互联网公司校招 Java 开发岗面试知识点解析
  8. 深富策略科技股持续走强
  9. 计算机中什么是数组公式,学会就能效率翻倍的数组公式,到底怎么用?
  10. 树莓派YOLOV5连接手机摄像头