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

WBOY
リリース: 2016-06-13 08:50:58
オリジナル
2669 人が閲覧しました

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

 

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!