0

サイズが 2^n の int 配列があり、0 より大きい要素が存在するかどうかを確認したい。要素が存在する場合は、配列を 4 で割り、見つかった要素の座標が 1 番目にあるかどうかを確認したい、アレイの第 2、第 3、または第 4 象限。

たとえば、要素が最初の象限に存在する場合、論理的には次のようになります。

If array[][] > 0 && その座標の行は範囲 0-(grid.length/2-1) にあります && その座標の列は範囲 0-(grid.length/2-1) にありますそれから何かをします。

見つかった要素の行と列のインデックスを確認し、それらの座標を保存して if ステートメントで使用する方法が本当にわかりません。ヘルプ!

4

3 に答える 3

1

あなたのコードは次のようになります

for(int i = 0; i < array.length; i++){
    for(int j; j < array[i].length; j++){
        if(array[i][j] > 0){
           do some thing
         }
     }
}
于 2013-11-03T21:53:02.313 に答える
0

私があなたの質問を理解しているように、次のケースがあります: 0、N (単一の次元配列内の要素の位置を表す) の間の整数 k が与えられた場合、2 次元配列内の対応するセルの座標を見つけます。つまり、x を見つけます。 (i,j) ここで、x には R 行と C 列があります。

Example (rows R=3 and Columns C=4)

0 1 2  3 
4 5 6  7
8 9 10 11

Given k=6  Then i=1, j=2
Given k=11 Then i=2, j=3

Given k, you can find i, j as follows:

i=Int(k/c) //Row number (0-based)

j=k%c // Column number - (0-based) obtained by the remainder of dividing k by c
于 2013-11-03T22:27:55.253 に答える
0

ネストされたforループを使用していますよね?そして、見つかった要素を返す関数のようなものがあると思いますか? そのため、見つかった要素とその座標を返す関数が必要です。配列がこの関数の外部で使用できる場合は、座標のみが必要です。

このようなもの(疑似コード):

for i from 0 to max X
    for j from 0 to max Y
        if array[i][j] > 0
            return (array[i][j], i, j) # A tuple, or whatever -
                                       # just some data structure for
                                       # storing multiple things
于 2013-11-03T21:51:47.290 に答える