PHPの経典のアルゴリズムは百元でひよこを買います
6032 ワード
興味深い問題に遭遇し,2つの方法の効率を計算すると,すべての組合せを10,000,000回も並べ替えることに窮挙すれば~600回に簡略化されることが分かった.だから、あなたの条件や演算は、数千倍の効率を高める可能性があります.
出力結果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
<?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." ".$m." ".$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." ".$m." ".$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