2013-11-03 3 views
0

2^n 크기의 int 배열이 있고 0보다 큰 요소가 있는지 확인하고 싶습니다. 요소가 존재하면이 배열을 4와 발견 된 요소의 좌표가 배열의 1, 2, 3 또는 4 사분면에 있는지 확인하십시오. 소자는 제 1 사분면에 존재하는지Java에서 값 범위의 2D 배열 검색

예를 들어, 논리적으로는 다음과 같을 것이다 :

경우 배열 [] []> 0 & 그 행 좌표 &의 범위 0 - 인 (그리드 .length/2-1) & & 그 좌표의 열은 0- (grid.length/2-1) 범위에 있고 그 다음 무언가를하십시오.

나는 실제로 발견 된 요소의 행과 열 인덱스를 검사하고 이러한 if 문에서 사용할 좌표를 저장하는 방법을 잘 모르겠습니다. 도움!

답변

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 
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 
     } 
    } 
} 
0

같이해야합니다, 당신은 다음과 같은 경우이 : 0의 정수 k를 감안할 때 , N (단일 Dim 배열에서 요소의 위치를 ​​나타냄)은 2 차원 배열에서 해당 셀의 좌표를 찾습니다. 즉, x (R)와 R (C) 열이있는 x (i, j)를 찾습니다.

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