इस समस्या में, हमें एक 2D मैट्रिक्स दिया गया है। हमारा काम मैट्रिक के सभी तत्वों को तिरछे क्रम में प्रिंट करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
1 2 3 4 5 6 7 8 9
आउटपुट -
1 4 2 7 5 3 8 6 9
आइए देखते हैं कि मैट्रिक्स को ज़िगज़ैग रूप या विकर्ण रूप में प्रिंट करते समय किस पैटर्न का पालन किया जाता है।
इस तरह से विकर्ण ट्रैवर्सल काम करता है।
आउटपुट में लाइनों की संख्या हमेशा 2D मैट्रिक्स की पंक्ति और कॉलम पर निर्भर करती है।
2D मैट्रिक्स मैट[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<<"The matrix is : \n"; for (int i=0; i< R; i++){ for (int j=0; j<C; j++) cout<<M[i][j]<<"\t"; cout<<endl; } cout<<"\nZigZag (diagnoal) traversal of matrix is :\n"; printDiagonalMatrix(M); return 0; }
आउटपुट
The matrix is : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ZigZag (diagonal) traversal of matrix is : 1 5 2 9 6 3 13 10 7 4 17 14 11 8 18 15 12 19 16 20