इस समस्या में, हमें एक आयताकार पैटर्न को 2D मैट्रिक्स में प्रिंट करना होता है इस तरह से कि वे एक-दूसरे के प्रति केंद्रित हों।
आइए इस समस्या को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं,
For n=4 is : 4 4 4 4 4 4 4 4 3 3 3 3 3 4 4 3 2 2 2 3 4 4 3 2 1 2 3 4 4 3 2 2 2 3 4 4 3 3 3 3 3 4 4 4 4 4 4 4 4
यहां, हमें n, पूर्णांक मान और संकेंद्रित आयतों को -
के रूप में लेते हुए ऊपर दिए गए पैटर्न को प्रिंट करना होगाn n n n n n n-1 n-1 n-1 n n n-1 n-2 n-1 n n n-1 n-1 n-1 n n n n n n
अब, इस समस्या में, जैसा कि हम देख सकते हैं (2n-1) . हैं कुल मिलाकर 2D मैट्रिक्स में कॉलम और पंक्तियाँ। यह 2D मैट्रिक्स दो भागों में मुद्रित होता है। ऊपर वाला 0 से (2n-1)/2 . तक होगा और निचला आधा ((2n-1)/2+1) से 2n-2 . तक होगा ।
अब, जब तक संख्या पंक्तियों की संख्या तक नहीं पहुंच जाती, यानी 1 से i (पंक्तियों की संख्या)। फिर यह संख्या को वापस n तक बढ़ा देता है।
उदाहरण
इस तर्क का उपयोग करके समस्या को हल करने के लिए एक प्रोग्राम बनाने देता है,
#include <bits/stdc++.h>
using namespace std;
void print2Dsequence(int n){
int s = 2 * n - 1;
for (int i = 0; i < (s / 2) + 1; i++) {
int m = n;
for (int j = 0; j < i; j++) {
cout << m << " ";
m--;
}
for (int k = 0; k < s - 2 * i; k++) {
cout << n - i << " ";
}
m = n - i + 1;
for (int l = 0; l < i; l++) {
cout << m << " ";
m++;
}
cout << endl;
}
for (int i = s / 2 - 1; i >= 0; i--) {
int m = n;
for (int j = 0; j < i; j++) {
cout << m << " ";
m--;
}
for (int k = 0; k < s - 2 * i; k++) {
cout << n - i << " ";
}
m = n - i + 1;
for (int l = 0; l < i; l++) {
cout << m << " ";
m++;
}
cout << endl;
}
}
int main(){
int n = 4;
cout<<"The sequence of concurrent rectangle of 4 is : \n";
print2Dsequence(n);
return 0;
} आउटपुट
4 के समवर्ती आयत का क्रम है -
4 4 4 4 4 4 4 4 3 3 3 3 3 4 4 3 2 2 2 3 4 4 3 2 1 2 3 4 4 3 2 2 2 3 4 4 3 3 3 3 3 4 4 4 4 4 4 4 4