0

ボグルボードの隣接行列を生成したいと思います。ボグル ボードは、次のような nxn マトリックスにアルファベットがあるボードです: http://www.wordtwist.org/sample.gif

各セルは隣接セルに接続されています。基本的に、上下左右に移動して別のセルに接続します。

各セルをグラフの頂点として表示すると、ボグル ボードの隣接行列を見つけることができます。

隣接するセルを見つけるために、次の式を思いつきました: セルのインデックスが 0 から始まり、左から右に番号が付けられていると仮定します。i = セル インデックス、n = 行数/列数。したがって、3x3 マトリックスでは、i=0 が最初のセルになり、n は 3 になります。

up = i-n
down = i+n
left = i-1
right = i+1
diagonal 1 = i-(n+1), i+(n+1)
diagonal 2 = i-(n-1), i+(n-1)

コーナーセルの場合、上記の式は失敗します。コーナーケースの無効なセルを除外する方法は?

4

1 に答える 1

1

何も「除外」する必要はありません。結果が境界内にあるかどうかを確認するだけです。そうでない場合は、有効なセルはありません。(つまり、3x3 マトリックス (i = 0) の左上にいる場合、上 (i - n) は (0 - 3 = -3) です。-3 はマトリックスの範囲外であるため、有効な値はありません。細胞。

したがって、検索を行っていて、「上」に隣接するセルに沿って移動したい場合は、まずその場所が境界内にあるかどうかを確認します。そうでない場合は、最後にいます。

マトリックスの左端または右端にいるかどうかを確認するには、次を使用します。

if i % (n-1) == 0// 右端

if i % (n) == 0// 左端

于 2013-02-06T22:28:57.990 に答える