0

我有一个 2^n 大小的 int 数组,我想检查是否存在大于 0 的元素。如果元素存在,我想将数组除以 4 并检查找到的元素的坐标是否在第一个, 数组的第 2、第 3 或第 4 象限。

例如,从逻辑上讲,如果元素存在于第一象限中,它看起来像这样:

如果 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(表示单个 dim.array 中元素的位置),在二维数组中找到相应单元格的坐标,即找到 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 回答