이 문제에서는 2차원 배열을 1차원 배열로 변환하는 방법을 이해할 것입니다. 2차원 배열의 요소를 1차원 배열에 저장하는 방법을 살펴보겠습니다.
여기서 1차원 배열의 크기는 2차원 배열의 원소의 총 개수인 n*m과 같다.
프로그래밍에서 2차원 배열을 1차원 배열에 저장하는 두 가지 방법이 있습니다. 그들은-
- 행 주요
- 열 전공
주요 행: 행 메이저에서는 행의 모든 요소가 함께 저장되고 다음 행으로 이동합니다.
크기가 nXm인 2차원 배열의 요소에 인덱스 (i, j)가 1차원 배열에 저장되어 있으면 1차원 배열의 인덱스는
(j) + (i)*m
주요 열: 열 메이저에서는 열의 모든 요소가 함께 저장되고 다음 열이 순회됩니다.
크기가 nXm인 2차원 배열의 요소에 인덱스 (i, j)가 1차원 배열에 저장되어 있으면 1차원 배열의 인덱스는
(i) + (j)*n
문제를 이해하기 위한 예를 보겠습니다.
입력: n =3, m =5, (i,j) =(0, 2)
출력: 행 메이저 =
열 주요 =
설명:
주요 행 =2 + 0*3 =3
Col-major =0 + 2*5 =10
2-D에서 1-D로의 변환을 설명하는 프로그램,
예시
#include<iostream> using namespace std; int main() { int n = 3; int m = 5; int grid[n][m] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {13, 14, 15}}; int i = 0; int j = 2; int rowMajorIndex = i*n + j; cout<<"Index of element at index (0, 2) in 1-D array using row-major is "<<rowMajorIndex<<endl; int colMajorIndex = i + j*m; cout<<"Index of element at index (0, 2) in 1-D array using column-major is "<<colMajorIndex<<endl; return 0; }
출력 -
Index of element at index (0, 2) in 1-D array using row-major is 2 Index of element at index (0, 2) in 1-D array using column-major is 10