2次元配列を持ち、1D配列に変換したい。1D配列要素の最近傍操作
2D配列がある:1次元配列に
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
:私は得ることができるように私は、1次元配列の要素数の最近傍にアクセスするにはどうすればよい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3
5 6 7
9 10 11
in C++で2D配列でアクセスしたときと同じ結果です?
2次元配列を持ち、1D配列に変換したい。1D配列要素の最近傍操作
2D配列がある:1次元配列に
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
:私は得ることができるように私は、1次元配列の要素数の最近傍にアクセスするにはどうすればよい
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3
5 6 7
9 10 11
in C++で2D配列でアクセスしたときと同じ結果です?
M
のアイテムが長さがN
個長い場合は、M*N
の要素を持つ1Dアレイが必要です。
x
の隣人を見つけよう:上記溶液を底面としているアレイの最上部に隣接し、だけでなく、右端と左端を作ること
left(x) = (x - 1) % M
right(x) = (x + 1) % M
above(x) = (x - M) % (M * N)
below(x) = (x + M) % (M * N)
注意を。これを取り除くには、モジュラ演算を省略し、インデックスが右/左/上/下の端を通過したときを検出するだけです。
申し訳ありませんが、あなたの解決策を理解できません。私を啓発しますか? – taker
配列位置 'x'を見ると、左側の隣は' x-1'になります。右側の隣は 'x + 1'にあります。あなたの上の隣人は 'x-M'です。あなたの下の隣人は 'x + M'です。これは、あなたが下がるにつれて縦軸が増加することを前提としています。それを減らしたい場合は、上記の数学と数学を入れ替えてください。リテラルエッジケースです。上端、下端、左端、または右端に到達したときに、どのようにネイバーを処理したいですか? – ObscureRobot
算術演算付き。古いインデックス付け 'm [1] [2]'新しいインデックス付け 'm [1 * 4 + 2]'。 x [y-1]、x [x + 1] [y]など、新しい:[((x-1)+ 4 *(x-1) 1)、[x + 4 *(y-1)]、[x + 1 + 4 *(y-1)]である。配列の幅を '4'に置き換えます。 – user786653
ありがとうございます。 – taker
ロジックは、あなたはPythonコードを読んで気にしない場合、見つけることができます[ここ](http://stackoverflow.com/a/41880018/5496529) –