0

私はこの問題の解決策を考えようとしています:

次のように配置された 10 個のドット間の三角形のすべての可能性を生成します。

.   .   .

.   .   . 

.   .   .

    .

(通常の携帯電話のキーパッドのようなもの)
1 行目: 1 2 3
2 行目: 4 5 6
3 行目: 7 8 9 4
行目: 0

私はPHPを使用しています。私は反対のロジックを使用して生成しようとしました。(すべての組み合わせを取得し、三角形ではないすべての組み合わせを削除しますが、それは複雑すぎます)。誰か提案はありますか?

4

2 に答える 2

2

私は次のことを考えました:

$banned = array(5,8,10);
$array = array();
for($i=1;$i<11;$i++){
    for($j=1;$j<11;$j++){
        for($k=1;$k<11;$k++){
            if($i != $j && $j != $k && $i != $k){
                $tmp = array($i, $j, $k);
                sort($tmp);
                if($tmp[1]-$tmp[0] !== $tmp[2]-$tmp[1] AND $tmp !== $banned){
                    $array[] = $tmp;
                }
            }
        }
    }
}
$array = array_map("unserialize", array_unique(array_map("serialize", $array)));// remove duplicates
print_r($array); // printing
于 2013-06-07T23:46:00.893 に答える