php公鸡五钱一只,PHP经典题:百钱百鸡问题(穷举算法)
百钱百鸡问题:
已知:公鸡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经典题:百钱百鸡问题(穷举算法)相关推荐
- 百钱百鸡php穷举法,PHP经典题:百钱百鸡问题(穷举算法)
PHP经典题:百钱百鸡问题(穷举算法) 百钱百鸡问题: 已知:公鸡5元一只,母鸡3元一只,小鸡一元3只 现用100元钱买了100只鸡,问:公鸡母鸡小鸡各几只? --请考虑尽可能高效的方法 思路: 如果 ...
- 要求用 100 元买 100 只鸡,其中公鸡五元一只,母鸡三元一只,小鸡 1 元三只,规定每种至少买一 只
要求用 100 元买 100 只鸡,其中公鸡五元一只,母鸡三元一只,小鸡 1 元三只,规定每种至少买一 只 public static void main(String[] args) {for(in ...
- 公鸡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只鸡,一共多少种买法,分 ...
- 【C语言基础练习】百钱买百鸡问题。母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只?
百钱买百鸡问题.母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只? 1 #include<stdio.h>2 int main()3 {4 int ...
- 【跳出for循环嵌套】公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱。问:用m文钱买m只鸡,公鸡、母鸡、小鸡各买多少只?并输出最小购买公鸡的数,并增加无解答案。
此题是百元买百鸡(C)的升级版 1.增加了用m文钱买m只鸡的要求,解决这个问题我们只需添加一个scanf函数即可. 2.输出最小可购买公鸡的数. 3.增加无解答案. 主要思路是用枚举法做,就是多个fo ...
- java嵌套循环例子:假定公鸡5元钱1只,母鸡3元钱1只,小鸡1元钱3只。现在有100元钱要求买100只鸡,请编程列出所有可能的购鸡方案。
这是一个典型的for()循环嵌套问题,下面的代码运用的三重for循环,分别从0开始直到达到最大的鸡的数目,在这个过程中通过不断的循环来寻找合适条件的解.假定i为公鸡数(i≤20),j为母鸡数(j≤33 ...
- 2.(C语言)百钱白鸡问题:100元钱买100只鸡,公鸡一只5元钱,母鸡一只3元钱,小鸡一元钱三只,求100元钱能买公鸡、母鸡、小鸡各多少只?
思路:母鸡和公鸡很好理解,主要是小鸡要绕下脑子,用100-母鸡-公鸡 =小鸡. 一定要除以3.0 不然 他会 舍去或者加上1 答案就不正确了. ps:感谢大佬提醒 刚学不久 希望多多指导 谢谢 #i ...
- html中js计算百钱百鸡,JS经典案例之百钱百鸡
今天我们来回顾一下JS的经典案例之百钱百鸡 题目 公鸡5元钱一只,母鸡3元钱一只,小鸡3只一元钱,用100元钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100元钱 ...
- Java经典算法——百钱百鸡
题目: 公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,用100文钱买100只鸡,可以怎么买? public class BQBJ {public static void main(String[] ...
- ZZULIOJ 1074:百钱买百鸡
百钱买百鸡 题目描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡.母鸡.小鸡各买多少只? 本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡, ...
最新文章
- NeurIPS 2020 :新一代算法“鉴黄师”诞生,中科院计算所研究生一作
- 微服务等于Spring Cloud?了解微服务架构和框架
- 《神探tcpdump第四招》-linux命令五分钟系列之三十八
- 名词用作动词举例_日语动词修饰名词的形式
- Linux驱动编程 step-by-step (二) 简单字符设备驱动
- linux精简、备份还原、iso文件、批量安装?
- rpm | 升级软件包
- ArrayQueue详解(待解决)
- element-ui 解决 table 里包含表单验证的问题!
- 一个基于DataTable的后台框架的实现
- 解压.tar.bz2文件出现错误
- Chrome浏览器解决主页被劫持的问题
- GATK使用方法详解(原始数据的处理)
- Python3使用SMTP协议发送电子邮件
- python 封包发包_python中封包建立过程实例
- 台式机+笔记本的扩展模式+远程登录设置
- mc服务器物品给予,我的世界网易版给予物品指令1.12谢谢
- 免费ofd在线转PDF
- 读书笔记:《浪潮之巅:下》
- 二维图形的基本变换与裁剪的变换矩阵