PHP百钱买百鸡算法(穷举算法)

小鸡5毛钱一只,母鸡3块钱一只,公鸡5块钱一只,问300块钱买100只鸡,有几种买法?

$xPrice   = 0.5;
$yPrice   = 3;
$zPrice   = 5;


$price = 300;
$count = 100;

$zCount  = $price / $zPrice;
$yCount  = $price / $yPrice;
$zCount  = $price / $zPrice;

$i = 1;
for($x=0; $x<$zCount; $x++)
{
    for($y=0; $y<$yCount; $y++)
    {
        for($z=0; $z<$zCount; $z++)
        {
            if((0.5 * $x + 3*$y + 5*$z == $price) && ($x + $y + $z == $count)){
                echo $i,".小鸡:",$z,",母鸡:",$y,",公鸡:",$x,PHP_EOL;
            }
        }
    }
}

优化后

$xPrice   = 0.5;
$yPrice   = 3;
$zPrice   = 5;


$price = 300;
$count = 100;

$zCount  = $price / $zPrice;
$yCount  = $price / $yPrice;
$zCount  = $price / $zPrice;

$i = 1;

for($x=1; $x<$zCount; $x++)
{
    for($y=1; $y<$yCount; $y++)
    {
        $z = $count - $x - $y;
            if((0.5 * $x + 3*$y + 5*$z == $price) && ($x + $y + $z == $count)){
                echo $i,".小鸡:",$z,",母鸡:",$y,",公鸡:",$x,PHP_EOL;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值