इस समस्या में, हमें एक 2D मैट्रिक्स दिया गया है। हमारा कार्य मैट्रिक्स के सभी तत्वों को विकर्ण क्रम में प्रिंट करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
1 2 3 4 5 6 7 8 9
आउटपुट -
1 4 2 7 5 3 8 6 9
आइए उस पैटर्न को देखें जो मैट्रिक्स को जिगजैग या विकर्ण रूप में प्रिंट करते समय अपनाया जाता है।

यही वह तरीका है जिससे विकर्ण ट्रैवर्सल काम करता है।
आउटपुट में लाइनों की संख्या हमेशा 2D मैट्रिक्स की पंक्तियों और स्तंभों पर निर्भर करती है।
mat[r][c] मैट्रिक्स के लिए, आउटपुट लाइनें r+c-1 होंगी।
उदाहरण
अब, आइए प्रोग्राम का समाधान देखें,
#include <iostream>
using namespace std;
#define R 5
#define C 4
int min2(int a, int b) { return (a < b) ? a : b; }
int min3(int a, int b, int c) { return min2(min2(a, b), c); }
int max(int a, int b) { return (a > b) ? a : b; }
void printDiagonalMatrix(int matrix[][C]) {
for (int line = 1; line <= (R + C - 1); line++) {
int start_col = max(0, line - R);
int count = min3(line, (C - start_col), R);
for (int j = 0; j < count; j++)
cout << matrix[min2(R, line) - j - 1][start_col + j] << "\t";
cout << endl;
}
}
int main() {
int M[R][C] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16},
{17, 18, 19, 20}};
cout << "मैट्रिक्स है : \n";
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++)
cout << M[i][j] << "\t";
cout << endl;
}
cout << "\nमैट्रिक्स का जिगजैग (विकर्ण) ट्रैवर्सल :\n";
printDiagonalMatrix(M);
return 0;
}
आउटपुट
मैट्रिक्स है : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 जिगजैग (विकर्ण) ट्रैवर्सल : 1 5 2 9 6 3 13 10 7 4 17 14 11 8 18 15 12 19 16 20