PHP/Python---百钱百鸡简单实现及优化

公鸡5块钱一只,母鸡3块钱一只,小鸡一块钱3只,
用100块钱买一百只鸡,问公鸡,母鸡,小鸡各要买多少只?

今天看到这题很简单 ,但是随手写出来后发现不是最优的??

php实现

//============百钱百鸡===========
//公鸡5元/只    母鸡3元/只    小鸡1元/3只   一百元买一百只
$count = 0; //记录运行次数
for($i=0; $i<=100; $i++){
    for($j=0; $j<=100-$i; $j++){
        if ($i*5 + $j*3 + (100-$i-$j)*1/3 == 100){
            print($i . ‘---‘ . $j . ‘---‘ . (100-$i-$j) . ‘<br>‘);
        }
        $count ++;
    }
}
echo $count;  //5151次

//========这是优化===========
$count = 0; //记录运行次数
for($i=0; $i<=100/5; $i++){
    for($j=0; $j<=(100-$i*5)/3; $j++){
        if ($i*5 + $j*3 + (100-$i-$j)*1/3 == 100){
            print($i . ‘---‘ . $j . ‘---‘ . (100-$i-$j) . ‘<br>‘);
        }
        $count ++;
    }
}
echo $count;  //364次
?>

  

  

python实现

这是343次查询

还可以再优化??

用PHP实现吧

原文地址:https://www.cnblogs.com/super-zhangkun/p/10826431.html

时间: 2024-10-28 19:51:34

PHP/Python---百钱百鸡简单实现及优化的相关文章

百钱百鸡,用高中数学优化算法

背景介绍 学习算法的道路上总会有各种各样的感受,偶然间碰到一个源自我国的算法问题,百钱百鸡问题,貌似很经典的问题了,可是我才刚刚知道,感觉自己太LOW了.题目是出自古代的一本叫做算经的书,原文是文言文就不往出贴了,贴了也看不懂,说大家能听懂的话就是: 有公鸡,母鸡,小鸡三种鸡,公鸡5块钱一只,母鸡三块钱一只,小鸡一块钱三只,要求用一百块钱买上面三种鸡(都要有),并且三种鸡总数是一百只,要求所有的解法. 分析 在感叹古人物价的同时,思考题目,其实很简单,只需要满足两个条件: 公鸡 + 母鸡 + 小

0002_百钱买鸡

百钱买鸡:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱? 思路:设定公鸡,母鸡,小鸡各买x,y,z只,则满足下列条件: x+y+z=100; 5x+3y+z/3=100: 1 __author__ = 'qq593' 2 # /usr/bin/python 3 # -*- coding:utf-8 -*- 4 5 #x is the unknown number 6 for y in ra

百担百马+百钱百鸡+水仙花数--------“穷举”的三个练习题

1 //百马百担类似于百鸡百钱的问题,穷举 2 3 for(int dm =0;dm<=33;dm++) //大马的数量,第一层循环 4 5 { 6 for(int zm =0;zm<=50;zm++) //中马的数量,第二层循环 7 8 { 9 for(int xm = 0; xm<=200;xm++) //小马的数量,第三层循环 10 11 { 12 if(dm+zm+xm==100&&dm*3+zm*2+xm/2.0==100) 13 { 14 System.out

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只

最大公约数和最小公倍数、猴子吃桃问题、百钱百鸡问题、打印1--100的素数

1 //最大公约数和最小公倍数 2 Scanner sc=new Scanner(System.in); 3 if (sc.hasNextInt()) { 4 int n=sc.nextInt(); 5 int m=sc.nextInt(); 6 int a=0; 7 int gy=0; 8 if (m>n) { 9 a=n; 10 }else { 11 a=m; 12 } 13 for (int i = 1; i <=a; i++) { 14 if (n%i==0&&m%i=

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

解决百钱买鸡问题原本并不困难,关键的是这道题对其进行了升级,测试数据太大,传统的解法,像三重循环,二重循环都会导致超时. 这道题正确的解法应该是结合数学方程进行化简,将其转化为1层循环: x+y+z=n ax+by+c/d*z=m 由上述两个方程联立可用其他量表示出y来.从而只需要枚举x就能解决该题. 在求方程之后注意要化简,只有能整除的时候才进行整除.最后与m比较的时候因为c/d的问题,所以等式两边同时乘以d以消除误差. 最后千万不要加上z%d==0的条件,因为例如当3元买12小鸡的时候,实际

Craps赌博游戏、百钱白鸡、七星彩选号、抓小偷、21根火柴、10000以内完美数

Craps赌博游戏 游戏规则:同时扔两颗骰子,第一次扔出的点数数7或则11玩家胜,扔出2.3或则12庄家胜利,否则继续扔骰子. 以后只要扔出和第一次相同的点数玩家胜,扔出7庄家胜. 玩家每次进入有1000的筹码,输完游戏结束! 1 public static void gambleGame() { 2 int a = 0; 3 int money = 1000; 4 for (int j = 0;; j++) { 5 if (money > 0) { 6 System.out.println(&qu

C语言百钱白鸡问题

问题描述:中国古代数学家张丘建在他的<算经>中提出了一个著名的“百钱白鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡.母鸡.小鸡各多少只? 问题分析:我们将公鸡.母鸡.小鸡对应的变量分别设为cock.hen.chicken,则有chicken必定为三的倍数.同时满足cock+hen+chicken=100,并且满足5*cock+3*hen+chicken/3=100.本题我们需要用循环结构来进行穷举.需要三重循环,对cock循环,对hen的循环,对chi

【算法】百钱百鸡

1. 问题 公鸡一只5文,母鸡一只3文,小鸡3只一文,要求用一百文钱刚好买一百只鸡,求所有可能性 2. 思路 根据已知可以得出等量关系如下(公鸡 x 母鸡 y 小鸡 z ) 5x + 3y + z/3 = 100 x + y + z = 100 经过推导得到 7x + 4y = 100 0  ≤  x  ≤  14 0  ≤  y  ≤  25 3. 代码实现 参照以上思路通过 Scala 实现 for(i <- 0 to 14){ for(j <- 0 to 25){ if(7*i+4*j