PHP经典算法百钱买小鸡
遇到一道有趣的题,并计算2种方法的效率,发现如果穷举所有组合竟高达1000000次排列~所以简化到了600次。所以,你的一个条件,或者一个运算,可能会提高几千倍的效率!
<?php
header("Content-Type:text/html;charset=utf-8");
//百钱买小鸡
/*
公鸡5文钱1只,母鸡三文钱一只,小鸡一文钱三只。
现在用100文钱共买了100只鸡,
问这100只鸡中,公鸡,母鸡,小鸡各是多少只?
*/
$start = microtime(true);
//写法一 穷举所有排列:计算1000000次。
for($g = 1; $g <= 100; $g++){
for($m = 1; $m <= 100; $m++){
for($x = 1; $x <= 100; $x++){
if($g+$m+$x == 100 && $g*5+$m*3+$x/3==100){
echo "公,母,雏,分别为:".$g." ".$m." ".$x."<br />";
}
//计算排列组合次数
if($g == 100 && $m == 100 && $x == 100){
echo "排列次数为:".$g*$m*$x;
}
}
}
}
echo "<br />";
$end = microtime(true);
echo "函数执行时间为:".($end - $start);//计算函数运行时间。
echo "<br />";
//写法二:简化组合.
$start = microtime(true);
for($g = 1; $g < 20; $g++){
for($m = 1; $m <= 33; $m++){
$x = 100 - $g - $m;
if($g+$m+$x == 100 && $g*5+$m*3+$x/3==100){
echo "公,母,雏,分别为:".$g." ".$m." ".$x."<br />";
}
//计算排列组合次数
if($g == 19 && $m == 33){
echo "排列次数为:".$g*$m;
}
}
}
echo "<br />";
$end = microtime(true);
echo "函数执行时间为:".($end - $start);//计算函数运行时间。
echo "<br />";
?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
输出结果1:
公,母,雏,分别为:4 18 78
公,母,雏,分别为:8 11 81
公,母,雏,分别为:12 4 84
排列次数为:1000000
函数执行时间为:0.10584402084351
再来看一下第二套算法~整整差了一千倍~虽说是毫秒。
输出结果2:
公,母,雏,分别为:4 18 78
公,母,雏,分别为:8 11 81
公,母,雏,分别为:12 4 84
排列次数为:627
函数执行时间为:0.00016307830810547
PHP经典算法百钱买小鸡的更多相关文章
- 用JS来计算百钱买百鸡
怎样用一百块买一百只鸡?已知公鸡5块一只,母鸡3块一只,小鸡一块钱3只: 需要用到for循环嵌套,并且通过优化代码,可以加快运行效率. <!DOCTYPE html> <html l ...
- python解决百钱买百鸡
百钱买百鸡 关注公众号"轻松学编程"了解更多. 现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只 要求:公鸡.母鸡,小鸡都要有,把100文钱花完,买的鸡的数量正好是10 ...
- 百钱买百鸡问题 php版本
/* * 百钱买百鸡问题 * * 我国古代数学家张丘建在<算经>一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一:百钱买百鸡,则翁.母 ...
- SDUST 软件工程2016-作业4-A 百钱买鸡问题
解决百钱买鸡问题原本并不困难,关键的是这道题对其进行了升级,测试数据太大,传统的解法,像三重循环,二重循环都会导致超时. 这道题正确的解法应该是结合数学方程进行化简,将其转化为1层循环: x+y+z= ...
- 百钱买百鸡问题Java
//百钱买百鸡public class baiqianbaiji { static void BQBJ(int m,int n)//m为钱的总数,n为鸡数 { int z; for(int x = 0 ...
- Java_百钱买百鸡
题目:公鸡3文钱,母鸡2文钱,3只小鸡1文钱,百钱买百鸡,求多少公鸡,母鸡,小鸡? public class Work6{ public static void main(String[] args) ...
- 华为OJ平台——百钱买百鸡问题
题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假 ...
- C# 百钱买百鸡
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- Java实现 基础算法 百元买百鸡
public class 百元买百鸡 { public static void main(String[] args) { //母鸡 for (int i = 1; i < 33; i++) { ...
随机推荐
- HDU 5985 概率
n种硬币各有cnt[i]枚,每轮下其有p[i]概率保留,问各种硬币只有它存活到最后一轮的概率. 设k轮后i硬币存活概率$a[i][k]=(1-p^k_i)^{cnt[i]}$ 则最后只有第i种硬币存活 ...
- 博皮设计:HTML/CSS/Javascript 源码共享
首先感谢 sevennight 对我的大力帮助,由此他也成为了我的第一位园友:其次,由于本人并不了解 HTML/CSS,因此几乎都在 李宝亨 设计的 博皮源码 的基础上进行的修改:最后,为了获得 更加 ...
- tomcat集群及session共享
一般来说,java web app主要用作两个领域: 1.api.api一般是无状态的,所以无需考虑session共享的问题 2.传统web应用和网站,如crm,oa,erp,b2c,bbs等.尤其b ...
- mysql取字段名注意事项!!!!千万不能和关键字同名
今天就碰到一个恶心的问题,更新时update sql语句报错,查了半天感觉没问题啊,后来一行一行定位,终于找到原因了, 原来是有个字段是show,和mysql关键字冲突了,坑爹! 改了个名字就好了,或 ...
- 采用dlopen、dlsym、dlclose加载动态链接库【总结】【转】
转自:https://www.cnblogs.com/Anker/p/3746802.html 1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主程序逻辑不变,将 ...
- gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化【转】
转自:http://blog.csdn.net/qinrenzhi/article/details/78334677 相关博客http://blog.chinaunix.net/uid-2495495 ...
- git summary
Git 使用经验 缘起 一直想写一篇博文,记录我在使用git时遇到的问题以及解决办法.由于项目忙,偶尔的记录不连续,不成系统.今天有时间记录下来,方便自己以后查看. git 简介及其优势 简单来说,g ...
- 在VirtualBox上安装Ubuntu
Windows 10家庭中文版,VirtualBox 5.2.12 r122591,Ubuntu ubuntu-18.04-desktop, 前言 很久没用过Linux类的操作系统了,上一次是好多年前 ...
- 使用mongoose操作mongodb数据库
1.如何启动mongodb数据库 参考地址:http://www.runoob.com/mongodb/mongodb-window-install.html 在数据库安装的地方,bin文件夹,输入 ...
- OR 连接查询注意
用or 查询时, 取得是 每个or中条件的 查询的结果集union. select * from categorysecond t where ISNULL(null); ort.csid in (' ...