Computer >> Máy Tính >  >> Lập trình >> C ++

Mô phỏng mảng 2-d bằng cách sử dụng mảng 1-d trong C ++

Trong bài toán này, chúng ta sẽ hiểu về việc chuyển đổi mảng 2-D sang mảng 1-D. Chúng ta sẽ xem cách lưu trữ các phần tử của mảng 2-D sang mảng 1-D.

Ở đây, kích thước của mảng 1-D giống với tổng số phần tử trong mảng 2-D là n * m.

Trong lập trình có hai cách để lưu mảng 2-D sang mảng 1-D. Họ là−

  • Chính hàng
  • Chính cột

Hàng chính: Trong hàng chính, Tất cả các phần tử của một hàng được lưu trữ cùng nhau sau đó nó sẽ chuyển sang hàng tiếp theo.

Nếu một phần tử của mảng 2-D kích thước nXm có chỉ số (i, j) được lưu trữ trong mảng 1-D, thì chỉ số của nó trong mảng 1-D là

(j) + (i) * m

Chính cột: Trong cột chính, tất cả các phần tử của một cột được lưu trữ cùng nhau sau đó cột tiếp theo được duyệt qua.

Nếu một phần tử của mảng 2-D kích thước nXm có chỉ số (i, j) được lưu trữ trong mảng 1-D, thì chỉ số của nó trong mảng 1-D là

(i) + (j) * n

Hãy xem ví dụ để hiểu vấn đề,

Đầu vào: n =3, m =5, (i, j) =(0, 2)

Đầu ra: hàng-chính =
column-major =

Giải thích:

Hàng-chính =2 + 0 * 3 =3
Col-major =0 + 2 * 5 =10

Chương trình minh họa việc chuyển đổi 2-D sang 1-D,

Ví 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;
}

Đầu ra -

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