關於九宮格演算法的代碼

來源:互聯網
上載者:User
 1 ) {                array_pop($arr);                continue;            } elseif ( count($arr) == 1 ) {                unset($arr);                continue;            } elseif ( checkArr($arr) ) {                $GLOBALS['tmp'][] = $arr;            }    }}function checkArr($arr){    $m = array();    $val = 4;    if ($val == $arr[0] + $arr[1] - 9){        $m[] = $arr[0] + $arr[1] - 9;    }        if ($val == $arr[2] - $arr[3] * $arr[4]) {        $m[] = $arr[2] - $arr[3] * $arr[4];    }        if ($val == $arr[5] + $arr[6] - $arr[7]) {        $m[] = $arr[5] + $arr[6] - $arr[7];    }    if ($arr[5] != 0) {        if ($val == $arr[0] + $arr[2] / $arr[5]) {            $m[] = $arr[0] + $arr[2] / $arr[5];        }    }    if ($val == $arr[1] - $arr[3] * $arr[6]) {        $m[] = $arr[1] - $arr[3] * $arr[6];    }    if ($val == 9 - $arr[4] - $arr[7]) {        $m[] = 9 - $arr[4] - $arr[7];    }    $tmp = array_count_values($m);    foreach ($tmp as $v) {        if ( $v == 6 ) {            return true;        } else {            return false;        }    }}$startTime = microtime(true);getArr();$endTime = microtime(true);for( $i=0; $i                    {$arr[0]}            {$arr[1]}            9                            {$arr[2]}            {$arr[3]}            {$arr[4]}                            {$arr[5]}            {$arr[6]}            {$arr[7]}            fs;}echo '

共花費時間:';echo round($endTime - $startTime, 3);echo '秒

';die;

仿照網上九宮格窮舉代碼,結果死迴圈的,請各位看看。


回複討論(解決方案)

ignore_user_abort(true);set_time_limit(0);$tmp = array();function getArr($arr=''){    for ($i = 1; $i <= 9; $i++) {        if ( empty($arr) ) {            $arr[] = $i;        } elseif ( in_array($i, $arr) ) {            continue;        } else {            $arr[] = $i;        }        if ( count($arr) < 9 ) {            getArr($arr);        }        if ( count($arr) < 9 && count($arr) > 1 ) {            array_pop($arr);            continue;        } elseif ( count($arr) == 1 ) {            unset($arr);            continue;        } elseif ( checkArr($arr) ) {            $GLOBALS['tmp'][] = $arr;        }    }}function checkArr($arr){    $m = array();    $m[] = $arr[0] + $arr[1] + $arr[2];    $m[] = $arr[3] + $arr[4] + $arr[5];    $m[] = $arr[6] + $arr[7] + $arr[8];    $m[] = $arr[0] + $arr[3] + $arr[6];    $m[] = $arr[1] + $arr[4] + $arr[7];    $m[] = $arr[2] + $arr[5] + $arr[8];    $m[] = $arr[0] + $arr[4] + $arr[8];    $m[] = $arr[2] + $arr[4] + $arr[6];    $tmp = array_count_values($m);    foreach ($tmp as $v) {        if ( $v == 8 ) {            return true;        } else {            return false;        }    }}$startTime = microtime(true);getArr();$endTime = microtime(true);for( $i=0; $i                    {$arr[0]}            {$arr[1]}            {$arr[2]}                            {$arr[3]}            {$arr[4]}            {$arr[5]}                            {$arr[6]}            {$arr[7]}            {$arr[8]}            fs;}echo '

共花費時間:';echo round($endTime - $startTime, 3);echo '秒

';die;//該片段來自於http://outofmemory.cn

這是網上的例子。

 $a,                                                'b' => $b,                                                'c' => $c,                                                'd' => $d,                                                'e' => $e,                                                'f' => $f,                                                'g' => $g,                                                'h' => $h                                            );                                    }                                }                            }                        }                    }                }            }        }    }    return $ret;}?>

Array ( [a] => 2 [b] => 11 [c] => 4 [d] => 1 [e] => 0 [f] => 2 [g] => 7 [h] => 5 )

計算量有點大。。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.