Heim >Backend-Entwicklung >PHP-Tutorial >PHP经典题:百钱百鸡问题(穷举算法)_PHP教程

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

WBOY
WBOYOriginal
2016-07-12 09:04:482791Durchsuche

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只鸡,问:公鸡...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn