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++) { ...
随机推荐
- NOIP2011 提高组 Day1
自测:8:27——11:51 实际得分:100+60+20=180 期望得分:100+60+40=200 T3读错题,失20 http://cogs.pro/cogs/page/page.php?ai ...
- 【测试笔记】Redis学习笔记(十二)性能测试
http://blog.csdn.net/yangcs2009/article/details/50781530 Redis测试服务器一 redis_version:2.8.4 www@iZ23s8a ...
- e.getMessage() e.printStackTrace() 和e.printStackTrace() 小结
1 e.getMessage() ; 只会获得异常的名称.比如说NullPoint 空指针,就告诉你说是空指针 2.e.toString(): 获得异常种类和错误信息 3.e.printSta ...
- ConcurrentHashMap 产生NullPointerException
今天测试在发给我一段报错日志后,根据日志定位到从ConcurrentHashMap 的缓存中get的时候,ConcurrentHashMap的底层抛出了空指针,当时感觉很奇怪为什么在get的时候产生空 ...
- petri网初步
历史:Petri网的概念是德国的Carl Adam Petri早在1962年提出来的.他在他的论文里提出了一个新的信息流模型,这个模型基于系统各部分的异步并发的操作,并把各部分之间的关系用网状的图来描 ...
- 动态SQL中变量赋值
在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...
- IIS 问题集锦
本文主要记录IIS中遇到的各种问题以及注意事项 一.在IIS中.NET Framework的版本选择为什么没有v3.0,v3.5? 首先需要澄清的是这里有两个关于版本的东西:ASP.NET和.NET ...
- solr后台界面介绍——(十一)
1.加一个collection的方法 复制solr-home下的collection1,修改名字为collection2.并且修改collection2文件夹中配置文件core.properties中 ...
- required_new spring事务传播行为无效碰到的坑!
在测试事务传播行为的时候,因为用了同一个service中的方法测试,所以不管怎么设置都无效了: 原因是aop动态代理只会拦截一次执行方法,第二个方法是照搬的,只要调用其他service中的事务方法,传 ...
- 【算法学习】【洛谷】cdq分治 & P3810 三维偏序
cdq是何许人也?请参看这篇:https://wenku.baidu.com/view/3b913556fd0a79563d1e7245.html. 在这篇论文中,cdq提出了对修改/询问型问题(Mo ...