遇到一道有趣的题,并计算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."&nbsp;".$m."&nbsp;".$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."&nbsp;".$m."&nbsp;".$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经典算法百钱买小鸡的更多相关文章

  1. 用JS来计算百钱买百鸡

    怎样用一百块买一百只鸡?已知公鸡5块一只,母鸡3块一只,小鸡一块钱3只: 需要用到for循环嵌套,并且通过优化代码,可以加快运行效率. <!DOCTYPE html> <html l ...

  2. python解决百钱买百鸡

    百钱买百鸡 关注公众号"轻松学编程"了解更多. 现有100钱,公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱3只 要求:公鸡.母鸡,小鸡都要有,把100文钱花完,买的鸡的数量正好是10 ...

  3. 百钱买百鸡问题 php版本

    /* * 百钱买百鸡问题 * * 我国古代数学家张丘建在<算经>一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五:鸡母一,值钱三:鸡雏三,值钱一:百钱买百鸡,则翁.母 ...

  4. SDUST 软件工程2016-作业4-A 百钱买鸡问题

    解决百钱买鸡问题原本并不困难,关键的是这道题对其进行了升级,测试数据太大,传统的解法,像三重循环,二重循环都会导致超时. 这道题正确的解法应该是结合数学方程进行化简,将其转化为1层循环: x+y+z= ...

  5. 百钱买百鸡问题Java

    //百钱买百鸡public class baiqianbaiji { static void BQBJ(int m,int n)//m为钱的总数,n为鸡数 { int z; for(int x = 0 ...

  6. Java_百钱买百鸡

    题目:公鸡3文钱,母鸡2文钱,3只小鸡1文钱,百钱买百鸡,求多少公鸡,母鸡,小鸡? public class Work6{ public static void main(String[] args) ...

  7. 华为OJ平台——百钱买百鸡问题

    题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假 ...

  8. C# 百钱买百鸡

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  9. Java实现 基础算法 百元买百鸡

    public class 百元买百鸡 { public static void main(String[] args) { //母鸡 for (int i = 1; i < 33; i++) { ...

随机推荐

  1. 为什么我要用 Node.js? 案例逐一介绍

    介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScript ,从前端跨越到后端, ...

  2. react:在一个组件中调用别的组件中的方法

    先介绍一下要解决的问题:react中一个组件A和一个组件B,其中B是被connect(connect是redux中的方法)包装过的组件,包装成BContainer,A和BContainer的关系是兄弟 ...

  3. HDU 5532 Almost Sorted Array (最长非递减子序列)

    题目链接 Problem Description We are all familiar with sorting algorithms: quick sort, merge sort, heap s ...

  4. Linux dig命令

    dig(Domain Information Groper),和nslookup作用有些类似,都是DNS查询工具 1.dig命令格式 dig @dnsserver name querytype 如果你 ...

  5. Linux基础-vim编辑器

    使用vi编辑器编辑文件/1.txt进入编辑模式写入内容“hello world” 命令行模式输入i,进入编辑模式 写入HelloWorld,按ESC进入命令行模式,输入:进入扩展模式输入wq保存退出 ...

  6. msfpayload反弹shell

    1.前期-- 情景就是当我们获得webshell时,我们想留下我们的后门,这个时候我们可以用到msfpayload与msfconsole结合使用 启动PostgreSQL服务:service post ...

  7. Centos7安装 mysql5.6.29 shell脚本

    有很多可以借鉴的地方,故转载: 创建脚本mysql.sh,直接运行sh mysql.sh !/bin/bash if [ -d /software ] ;then cd /software else ...

  8. Android页面之间进行数据回传

    要求:页面1跳转到页面2,页面2再返回页面1同时返回数据 页面1添加如下代码: Intent intent = new Intent(); intent.setClass(页面1.this, 页面2. ...

  9. python基础-类的属性(类属性,实例属性,私有属性)

      一:类的属性 类的属性分为:类属性(公有属性),实例属性和私有属性. 1)类属性(公有属性(静态字段): 类定义时直接指定的属性(不是在__init__方法中),可以通过类名直接访问属性,并且保存 ...

  10. 神经网络中的激活函数tanh sigmoid RELU softplus softmatx

    所谓激活函数,就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端.常见的激活函数包括Sigmoid.TanHyperbolic(tanh).ReLu. softplus以及softma ...