इस समस्या में, हमें एक 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 n
अब, इस समस्या में, जैसा कि हम देख सकते हैं 2D मैट्रिक्स में कुल (2n-1) स्तंभ और पंक्तियां हैं। यह 2D मैट्रिक्स दो भागों में प्रिंट किया जाता है। ऊपरी भाग 0 से (2n-1)/2 तक होगा और निचला आधा भाग ((2n-1)/2+1) से 2n-2 तक होगा।
अब, प्रत्येक पंक्ति मान को 1 से तब तक घटाती जाएगी जब तक संख्या पंक्तियों की संख्या तक न पहुंच जाए यानी 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; } आउटपुट
The sequence of the concurrent rectangle of 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