Home > Article > Backend Development > 关于九宫格算法的代码解决方法
关于九宫格算法的代码
<br /><?php<br /><br />ignore_user_abort(true);<br />set_time_limit(0);<br />$tmp = array();<br /><br />function getArr($arr='') {<br /> for ($i = 0; $i <= 11; $i++) {<br /> $arr[] = $i; <br /> if (count($arr) < 8) {<br /> getArr($arr);<br /> }<br /> <br /> if ( count($arr) < 8 && count($arr) > 1 ) {<br /> array_pop($arr);<br /> continue;<br /> } elseif ( count($arr) == 1 ) {<br /> unset($arr);<br /> continue;<br /> } elseif ( checkArr($arr) ) {<br /> $GLOBALS['tmp'][] = $arr;<br /> }<br /> }<br />}<br /><br />function checkArr($arr)<br />{<br /> $m = array();<br /> $val = 4;<br /> if ($val == $arr[0] + $arr[1] - 9){<br /> $m[] = $arr[0] + $arr[1] - 9;<br /> } <br /> if ($val == $arr[2] - $arr[3] * $arr[4]) {<br /> $m[] = $arr[2] - $arr[3] * $arr[4];<br /> } <br /> if ($val == $arr[5] + $arr[6] - $arr[7]) {<br /> $m[] = $arr[5] + $arr[6] - $arr[7];<br /> }<br /> if ($arr[5] != 0) {<br /> if ($val == $arr[0] + $arr[2] / $arr[5]) {<br /> $m[] = $arr[0] + $arr[2] / $arr[5];<br /> }<br /> }<br /> if ($val == $arr[1] - $arr[3] * $arr[6]) {<br /> $m[] = $arr[1] - $arr[3] * $arr[6];<br /> }<br /> if ($val == 9 - $arr[4] - $arr[7]) {<br /> $m[] = 9 - $arr[4] - $arr[7];<br /> }<br /> $tmp = array_count_values($m);<br /> foreach ($tmp as $v) {<br /> if ( $v == 6 ) {<br /> return true;<br /> } else {<br /> return false;<br /> }<br /> }<br />}<br />$startTime = microtime(true);<br />getArr();<br />$endTime = microtime(true);<br />for( $i=0; $i<count($tmp); $i++ ) {<br />$arr = $tmp[$i];<br />echo $str=<<<fs<br /> <table border="1" style="max-width:90%"><br /> <tr><br /> <td>{$arr[0]}</td><br /> <td>{$arr[1]}</td><br /> <td>9</td><br /> </tr><br /> <tr><br /> <td>{$arr[2]}</td><br /> <td>{$arr[3]}</td><br /> <td>{$arr[4]}</td><br /> </tr><br /> <tr><br /> <td>{$arr[5]}</td><br /> <td>{$arr[6]}</td><br /> <td>{$arr[7]}</td><br /> </tr><br /> </table><br />fs;<br />}<br />echo '<div style="float:left;width:100%;height:5px;clear:both"></div><h1 style="float:left">共花费时间:';<br />echo round($endTime - $startTime, 3);<br />echo '秒</h1>';<br />die;<br />
<br /><?php<br />set_time_limit(300);<br />print_r(test());<br />function test(){<br /> $ret = array();<br /> for($a=0; $a<12; $a++){<br /> for($b=0; $b<12; $b++){<br /> for($c=0; $c<12; $c++){<br /> for($d=0; $d<12; $d++){<br /> for($e=0; $e<12; $e++){<br /> for($f=1; $f<12; $f++){<br /> for($g=0; $g<12; $g++){<br /> for($h=0; $h<12; $h++){<br /> if($a+$b-9==4 && $c-$d*$e==4 && $f+$g-$h==4 && $a+$c/$f==4 && $b-$d*$g==4 && 9-$e-$h==4){<br /> return array(<br /> 'a' => $a,<br /> 'b' => $b,<br /> 'c' => $c,<br /> 'd' => $d,<br /> 'e' => $e,<br /> 'f' => $f,<br /> 'g' => $g,<br /> 'h' => $h<br /> );<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> }<br /> return $ret;<br />}<br />?><br />