PHPの経典のアルゴリズムは百元でひよこを買います

6032 ワード

興味深い問題に遭遇し,2つの方法の効率を計算すると,すべての組合せを10,000,000回も並べ替えることに窮挙すれば~600回に簡略化されることが分かった.だから、あなたの条件や演算は、数千倍の効率を高める可能性があります.
<?php header("Content-Type:text/html;charset=utf-8"); //      /*   5  1 ,       ,       。    100     100  ,   100   ,  ,  ,       ? */ $start = microtime(true); //          :  1000000 。 for($g = 1; $g <= 100; $g++){ for($m = 1; $m <= 100; $m++){ for($x = 1; $x <= 100; $x++){ if($g+$m+$x == 100 && $g*5+$m*3+$x/3==100){ echo " , , ,   :".$g."&nbsp;".$m."&nbsp;".$x."<br />"; } //         if($g == 100 && $m == 100 && $x == 100){ echo "     :".$g*$m*$x; } } } } echo "<br />"; $end = microtime(true); echo "       :".($end - $start);//        。 echo "<br />"; //   :    . $start = microtime(true); for($g = 1; $g < 20; $g++){ for($m = 1; $m <= 33; $m++){ $x = 100 - $g - $m; if($g+$m+$x == 100 && $g*5+$m*3+$x/3==100){ echo " , , ,   :".$g."&nbsp;".$m."&nbsp;".$x."<br />"; } //         if($g == 19 && $m == 33){ echo "     :".$g*$m; } } } echo "<br />"; $end = microtime(true); echo "       :".($end - $start);//        。 echo "<br />"; ?>

出力結果1:雄,母,雛,それぞれ:4 18,78公,母,雛,それぞれ:8 11,81公,母,雛,それぞれ:12 4 84配列回数:100000関数実行時間:0.10584402084351
2番目のアルゴリズムを見てみましょう.千倍も違います.ミリ秒とはいえ.
出力結果2:公,母,雛,それぞれ:4 18,78公,母,雛,それぞれ:8 11,81公,母,雛,それぞれ:12 4,84配列回数:627関数実行時間:0.000163,07830810547