इस समस्या में, हमें एक पूर्णांक मान N दिया गया है। हमारा कार्य (1, N2) रेंज में संख्याओं को NxN आकार के 2D मैट्रिक्स में इस तरह रखना है कि प्रत्येक पंक्ति के तत्वों का योग समान हो।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - N = 4
आउटपुट -
1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15
प्रत्येक पंक्ति में तत्वों का योग 34 है
इस विधि को हल करने के लिए, हमें मैट्रिक्स में प्रत्येक तत्व को इस तरह रखना होगा कि प्रत्येक पंक्ति में कुल योग समान हो। इसके लिए, हम लालची दृष्टिकोण और पंक्ति दर पंक्ति सही तत्वों को रखकर योग को समान बनाएंगे।
इसके लिए, हम शुरू में मैट्रिक्स में सभी तत्वों को भरेंगे और फिर एक नया मैट्रिक्स बनाएंगे जिसमें पिछले मैट्रिक्स के तत्व इस सूत्र का उपयोग करके हों,
resultMat[i][j] = prevMat[j][(i+j)%n]
उदाहरण
नीचे दिया गया कोड हमारे समाधान का कार्यान्वयन दिखाता है,
#include <iostream>
using namespace std;
int main() {
int n = 4, i, j;
cout << "मैट्रिक्स का आकार : " << n << " जिसमें सभी पंक्तियों के तत्वों का योग समान है :\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;
}
}
आउटपुट
मैट्रिक्स का आकार : 4 जिसमें सभी पंक्तियों के तत्वों का योग समान है : 1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15