ホームページ  >  記事  >  バックエンド開発  >  PHP の古典的な問題: 百貨と百鶏の問題 (徹底的なアルゴリズム)_PHP チュートリアル

PHP の古典的な問題: 百貨と百鶏の問題 (徹底的なアルゴリズム)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:04:482755ブラウズ

PHP の古典的な質問: 百貨と百鶏の問題 (徹底的なアルゴリズム)

100ドルと100羽の鶏の問題:
周知: 雄鶏は1羽5元、鶏は1羽3元、鶏は1羽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ですか? いいえ
......
これは「網羅的思考」と呼ばれます (つまり、考えられるすべての状況を 1 つずつテストする)
PHPコード:
エコー "

元のアイデア:

";
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
for($xiaoji = 0; $xiaoji
if($gongji*5 + $moji*3 + $xiaoji/3 == 100 && $gongji + $moji + $xiaoji == 100) {
echo "
$gongji の雄鶏、$miji の鶏、$xiaoji のひよこがいます;";
}
$count++; //回数を数える
}
}
}
echo "
回数: $count";
エコー '
';
echo "

コードの最適化 1:

";
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
$xiaoji = 100 - $gongji - $muji;
if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {
echo "
$gongji の雄鶏、$miji の鶏、$xiaoji のひよこがいます;";
}
$count++; //回数を数える
}
}
echo "
回数: $count";
エコー '
';
echo "

コードの最適化 2:

";
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
$xiaoji = 100 - $gongji - $muji;
if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {
echo "
$gongji の雄鶏、$miji の鶏、$xiaoji のひよこがいます;";
}
$count++; //回数を数える
}
}
echo "
回数: $count";
エコー '
';
echo "

コードの最適化 3:

";
$count = 0;
for($gongji = 0; $gongji
for($muji = 0; $muji
$xiaoji = 100 - $gongji - $muji;
if($gongji*5 + $muji*3 + $xiaoji/3 == 100) {
echo "
$gongji の雄鶏、$miji の鶏、$xiaoji のひよこがいます;";
}
$count++; //回数を数える
}
}
echo "
回数: $count";
エコー '
';
echo "

コードの最適化 4:

";
$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 の雄鶏、$miji の鶏、$xiaoji のひよこがいます;";
}
$count++; //回数を数える
}
}
echo "
回数: $count";
出力結果と計算時間:
オリジナルのアイデア:
鶏は 25 羽、雛は 75 羽います。
鶏が 4 羽、ヒナが 78 羽います。
雄鶏が 8 羽、雛が 81 羽います。
雄鶏が 12 羽、鶏が 84 羽います。
回数: 1030301
コードの最適化 1:
鶏は 25 羽、雛は 75 羽います。
鶏が 4 羽、ヒナが 78 羽います。
雄鶏が 8 羽、雛が 81 羽います。
雄鶏が12羽、雛が84羽います。
回数: 10201
コードの最適化 2:
鶏は 25 羽、雛は 75 羽います。
鶏が 4 羽、ヒナが 78 羽います。
雄鶏が 8 羽、雛が 81 羽います。
雄鶏が 12 羽、鶏が 84 羽います。
回数: 714回
コードの最適化 3:
鶏は 25 羽、雛は 75 羽います。
鶏が 4 羽、ヒナが 78 羽います。
雄鶏が 8 羽、雛が 81 羽います。
雄鶏が 12 羽、鶏が 84 羽います。
回数: 364回
コードの最適化 4:
鶏は 25 羽、雛は 75 羽います。
鶏が 4 羽、ヒナが 78 羽います。
雄鶏が 8 羽、雛が 81 羽います。
雄鶏が 12 羽、鶏が 84 羽います。
回数: 121回
http://www.bkjia.com/PHPjc/1071710.html
www.bkjia.com
tru​​e
http://www.bkjia.com/PHPjc/1071710.html
技術記事
PHP古典問題: 百貨百鶏問題 (網羅的アルゴリズム) 百貨百鶏問題: 既知: 雄鶏は 1 羽 5 元、鶏は 1 羽 3 元、ひよこ 3 羽は 1 ドルです。 100元の鶏肉で、「酉...
」と聞いてください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。