ホームページ バックエンド開発 PHPチュートリアル 九公格アルゴリズムのコードソリューションについて

九公格アルゴリズムのコードソリューションについて

Jun 13, 2016 pm 12:24 PM
amp arr gt lt nbsp

九公格アルゴリズム

1

<br />&lt;?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 &lt;= 11; $i++) {<br />        $arr[] = $i;  <br />        if (count($arr) &lt; 8) {<br />            getArr($arr);<br />        }<br />        <br />        if ( count($arr) &lt; 8 &amp;&amp; count($arr) &gt; 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&lt;count($tmp); $i++ ) {<br />$arr = $tmp[$i];<br />echo $str=&lt;&lt;&lt;fs<br />    &lt;table border="1"   style="max-width:90%"&gt;<br />        &lt;tr&gt;<br />            &lt;td&gt;{$arr[0]}&lt;/td&gt;<br />            &lt;td&gt;{$arr[1]}&lt;/td&gt;<br />            &lt;td&gt;9&lt;/td&gt;<br />        &lt;/tr&gt;<br />        &lt;tr&gt;<br />            &lt;td&gt;{$arr[2]}&lt;/td&gt;<br />            &lt;td&gt;{$arr[3]}&lt;/td&gt;<br />            &lt;td&gt;{$arr[4]}&lt;/td&gt;<br />        &lt;/tr&gt;<br />        &lt;tr&gt;<br />            &lt;td&gt;{$arr[5]}&lt;/td&gt;<br />            &lt;td&gt;{$arr[6]}&lt;/td&gt;<br />            &lt;td&gt;{$arr[7]}&lt;/td&gt;<br />        &lt;/tr&gt;<br />    &lt;/table&gt;<br />fs;<br />}<br />echo '&lt;div style="float:left;width:100%;height:5px;clear:both"&gt;&lt;/div&gt;&lt;h1 style="float:left"&gt;共花费时间:';<br />echo round($endTime - $startTime, 3);<br />echo '秒&lt;/h1&gt;';<br />die;<br />

ログイン後にコピー

のコードについては、オンライン九公格網​​羅コードをモデルにしており、結果は無限ループになります。ぜひご覧ください。
------ソリューションのアイデア----------------------

1

<br />&lt;?php<br />set_time_limit(300);<br />print_r(test());<br />function test(){<br />    $ret = array();<br />    for($a=0; $a&lt;12; $a++){<br />        for($b=0; $b&lt;12; $b++){<br />            for($c=0; $c&lt;12; $c++){<br />                for($d=0; $d&lt;12; $d++){<br />                    for($e=0; $e&lt;12; $e++){<br />                        for($f=1; $f&lt;12; $f++){<br />                            for($g=0; $g&lt;12; $g++){<br />                                for($h=0; $h&lt;12; $h++){<br />                                    if($a+$b-9==4 &amp;&amp; $c-$d*$e==4 &amp;&amp; $f+$g-$h==4 &amp;&amp; $a+$c/$f==4 &amp;&amp; $b-$d*$g==4 &amp;&amp; 9-$e-$h==4){<br />                                        return array(<br />                                                'a' =&gt; $a,<br />                                                'b' =&gt; $b,<br />                                                'c' =&gt; $c,<br />                                                'd' =&gt; $d,<br />                                                'e' =&gt; $e,<br />                                                'f' =&gt; $f,<br />                                                'g' =&gt; $g,<br />                                                'h' =&gt; $h<br />                                            );<br />                                    }<br />                                }<br />                            }<br />                        }<br />                    }<br />                }<br />            }<br />        }<br />    }<br />    return $ret;<br />}<br />?&gt;<br />

ログイン後にコピー

配列 ( [a] => 2 [b] => 4 [d] => 2 [g] => h] => 5 )

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

解決策: 組織では PIN を変更する必要があります。 解決策: 組織では PIN を変更する必要があります。 Oct 04, 2023 pm 05:45 PM

解決策: 組織では PIN を変更する必要があります。

Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する Sep 22, 2023 am 11:37 AM

Windows 11 でウィンドウの境界線の設定を調整する方法: 色とサイズを変更する

Windows 11でタイトルバーの色を変更するにはどうすればよいですか? Windows 11でタイトルバーの色を変更するにはどうすればよいですか? Sep 14, 2023 pm 03:33 PM

Windows 11でタイトルバーの色を変更するにはどうすればよいですか?

Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法 Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法 Sep 15, 2023 pm 03:57 PM

Windows 11 でタスクバーのサムネイル プレビューを有効または無効にする方法

Windows 11/10修復におけるOOBELANGUAGEエラーの問題 Windows 11/10修復におけるOOBELANGUAGEエラーの問題 Jul 16, 2023 pm 03:29 PM

Windows 11/10修復におけるOOBELANGUAGEエラーの問題

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

Huawei GT3 ProとGT4の違いは何ですか?

Windows 11 でのディスプレイ スケーリング ガイド Windows 11 でのディスプレイ スケーリング ガイド Sep 19, 2023 pm 06:45 PM

Windows 11 でのディスプレイ スケーリング ガイド

Windows 11で明るさを調整する10の方法 Windows 11で明るさを調整する10の方法 Dec 18, 2023 pm 02:21 PM

Windows 11で明るさを調整する10の方法

See all articles