2010-04-30 9 views
0

2 차원 행렬의 대체 원소의 합을 찾기위한 논리는 무엇입니까?2 차원 행렬

+2

다른 요소는 무엇입니까 ? – mob

+0

은 예를 들어 [0] [0], [1] [1], [2] [2], [0] [2] 및 [2] [0] 집단. – anurag18294

답변

3
//arr is the 2 D array MxN 
int sum = 0; 
for(int j=0;j<N;j++) 
{ 
    for(int i=j&1;i<M;i+=2) 
    { 
     sum += a[i][j]; 
    } 
} 
+0

아주 좋은 해결책이 어떻게 j & 1 작품을 이해할 수 없습니까 – anurag18294

+0

@ anurag18294 :'j & 1'은'i'의 최하위 비트를 테스트하고 있습니다. 이진수에서 비트는 짝수의 경우 0이고 홀수의 경우 1입니다. 부울 산술 연산자 아래의 C++ 참고서를 참조하십시오. –

2

2D 배열을 1 차원 배열로 캐스팅하고 합계를 루프로 수행 할 수 있습니다.

int *a = (int*)arr; //arr being the 2 D array 
int sum = 0; 
for(int i=0;i<M*N;i+=2) 
{ 
    sum += a[i]; 
} 
+0

배열이 인접한 경우에만 작동합니다. –

+0

@Paul R - 그는 turbo C++에서 질문에 태그를 지정했습니다. C/C++에서 배열은 연속적입니다. – SysAdmin

+0

@SysAdmin : C/C++에서 매우 다른 두 가지 방법으로 2D 배열을 선언 할 수 있습니다. (i) int [M] [N] 및 int (ii) int ** a. (i) 연속적이지만 (ii) 일반적으로 그렇지 않다. –

0
for (int i = 0; i < N; ++ i) 
    for (int j = i%2; j < M; j += 2) { 
    std::cout << i << "," << j << std::endl; 
    sum += a[i][j]; 
    }