首頁  >  文章  >  後端開發  >  PHP经典题:百钱百鸡问题(穷举算法)_PHP教程

PHP经典题:百钱百鸡问题(穷举算法)_PHP教程

WBOY
WBOY原創
2016-07-12 09:04:482757瀏覽

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只小鸡,数量是100吗?价钱是100吗? 否
如果有0只公鸡,1只母鸡,2只小鸡,数量是100吗?价钱是100吗? 否
......
如果有0只公鸡,1只母鸡,100只小鸡,数量是100吗?价钱是100吗? 否
如果有0只公鸡,2只母鸡,1只小鸡,数量是100吗?价钱是100吗? 否
......
如果有100只公鸡,100只母鸡,0只小鸡,数量是100吗?价钱是100吗? 否
如果有100只公鸡,100只母鸡,1只小鸡,数量是100吗?价钱是100吗?
如果有100只公鸡,100只母鸡,2只小鸡,数量是100吗?价钱是100吗?
......
这就叫做:穷举思想 (就是将所以可能的情况挨个去测试)
 
PHP代码:
 
echo "

原始思路:

";
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
for($xiaoji = 0; $xiaoji
if($gongji*5 + $muji*3 + $xiaoji/3 == 100 && $gongji + $muji + $xiaoji == 100) {
echo "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";
}
$count++; //计算次数
}
}
}
echo "
次数:$count";
echo '
';
echo "

代码优化一:

";
 
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
$xiaoji = 100 - $gongji - $muji;
if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {
echo "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";
}
$count++; //计算次数
}
}
echo "
次数:$count";
 
echo '
';
echo "

代码优化二:

";
 
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
$xiaoji = 100 - $gongji - $muji;
if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {
echo "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";
}
$count++; //计算次数
}
}
echo "
次数:$count";
 
 
echo '
';
echo "

代码优化三:

";
 
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
$xiaoji = 100 - $gongji - $muji;
if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {
echo "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";
}
$count++; //计算次数
}
}
echo "
次数:$count";
 
 
echo '
';
echo "

代码优化四:

";
 
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
$xiaoji = 100 - $gongji - $muji;
if($xiaoji % 3 != 0) {continue;} //考虑小鸡的价钱,则小鸡的数量只能被3整除才合理
if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {
echo "
公鸡有 $gongji 只;母鸡有 $muji 只;小鸡有 $xiaoji 只;";
}
$count++; //计算次数
}
}
echo "
次数:$count";
 
输出的结果及计算次数:
 
原始思路:
 
公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;
公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;
公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;
公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;
次数:1030301
代码优化一:
 
公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;
公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;
公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;
公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;
次数:10201
代码优化二:
 
公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;
公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;
公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;
公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;
次数:714
代码优化三:
 
公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;
公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;
公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;
公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;
次数:364
代码优化四:
 
公鸡有 0 只;母鸡有 25 只;小鸡有 75 只;
公鸡有 4 只;母鸡有 18 只;小鸡有 78 只;
公鸡有 8 只;母鸡有 11 只;小鸡有 81 只;
公鸡有 12 只;母鸡有 4 只;小鸡有 84 只;
次数:121
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1071710.htmlTechArticlePHP经典题:百钱百鸡问题(穷举算法) 百钱百鸡问题: 已知:公鸡5元一只,母鸡3元一只,小鸡一元3只 现用100元钱买了100只鸡,问:公鸡...
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn