এই সমস্যায় আমরা ২-ডি অ্যারে থেকে ১-ডি অ্যারে রূপান্তর বুঝব। আমরা দেখব ২-ডি অ্যারের উপাদানগুলো ১-ডি অ্যারেতে কীভাবে সংরক্ষণ করা যায়।
এখানে, ১-ডি অ্যারের আকার ২-ডি অ্যারের মোট উপাদান সংখ্যার সমান যেটি n*m।
প্রোগ্রামিং-এ ২-ডি অ্যারে ১-ডি অ্যারেতে সংরক্ষণ করার দুটি পদ্ধতি রয়েছে। সেগুলো হলো:
- রো মেজর (Row Major)
- কলাম মেজর (Column Major)
রো মেজর: রো মেজরে, একটি রোয়ের সব উপাদান একসাথে সংরক্ষিত হয় তারপর পরের রোয়ে যাওয়া হয়।
যদি nXm আকারের ২-ডি অ্যারের একটি উপাদানের ইন্ডেক্স (i, j) ১-ডি অ্যারেতে সংরক্ষিত হয়, তবে ১-ডি অ্যারেতে এর ইন্ডেক্স হবে
(j) + (i)*m
কলাম মেজর: কলাম মেজরে, একটি কলামের সব উপাদান একসাথে সংরক্ষিত হয় তারপর পরের কলাম ট্রাভার্স করা হয়।
যদি nXm আকারের ২-ডি অ্যারের একটি উপাদানের ইন্ডেক্স (i, j) ১-ডি অ্যারেতে সংরক্ষিত হয়, তবে ১-ডি অ্যারেতে এর ইন্ডেক্স হবে
(i) + (j)*n
উদাহরণ দিয়ে বুঝি
ইনপুট: n = 3, m = 5, (i,j) = (0, 2)
আউটপুট: রো-মেজর =
কলাম-মেজর =
ব্যাখ্যা:
রো-মেজর = 2 + 0*3 = 3
কল-মেজর = 0 + 2*5 = 10
২-ডি থেকে ১-ডি রূপান্তর minhaj করার প্রোগ্রাম
#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