इस समस्या में, हमें एक आयताकार पैटर्न को 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