এই সমস্যাতে, একটি পূর্ণসংখ্যা N দেওয়া আছে। আমাদের কাজ হলো (1, N2) রেঞ্জের সংখ্যাগুলো NxN আকারের ২D ম্যাট্রিক্সে এমনভাবে বসানো যাতে প্রতিটি সারির উপাদানগুলোর যোগফল সমান হয়।
উদাহরণ:
ইনপুট - N = 4
আউটপুট -
1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15
প্রতিটি সারির উপাদানগুলোর যোগফল ৩৪।
এই পদ্ধতিতে, আমরা লালচী পদ্ধতি (greedy approach) এবং সারি দিয়ে সারি উপাদান বসিয়ে যোগফল সমান রাখব।
প্রথমে সব উপাদান ম্যাট্রিক্সে বসিয়ে, তারপর একটি নতুন ম্যাট্রিক্স তৈরি করব পূর্বের ম্যাট্রিক্সের উপাদান ব্যবহার করে এই সূত্রে:
resultMat[i][j] = prevMat[j][(i+j)%n]
উদাহরণ
সমাধানের কোড:
#include<iostream>
using namespace std;
int main() {
int n = 4, i, j;
cout << "Matrix of size : " << n << " in which sum of elements of all rows is equal is :\n";
int prevMat[n][n], resultMat[n][n];
int c = 1;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
prevMat[i][j] = c++;
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
resultMat[i][j] = prevMat[j][((i+j)%n)];
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
cout << resultMat[i][j] << "\t";
cout << endl;
}
return 0;
} আউটপুট
Matrix of size : 4 in which sum of elements of all rows is equal is : 1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15