কম্পিউটার টিউটোরিয়াল

C++-এ ম্যাট্রিক্সের জিগজ্যাগ (ডায়াগোনাল) ট্রাভার্সাল


এই সমস্যাতে, আমাদের একটি ২D ম্যাট্রিক্স দেওয়া আছে। আমাদের কাজ হলো ম্যাট্রিক্সের সব উপাদান ডায়াগোনাল অর্ডারে প্রিন্ট করা।

উদাহরণ:

1   2   3
4   5   6
7   8   9

আউটপুট -

1 4   2 7   5   3 8   6 9

ম্যাট্রিক্সকে জিগজ্যাগ বা ডায়াগোনাল ফর্মে প্রিন্ট করার সময় যে প্যাটার্ন অনুসরণ করা হয়:

C++-এ ম্যাট্রিক্সের জিগজ্যাগ (ডায়াগোনাল) ট্রাভার্সাল

আউটপুট লাইনের সংখ্যা সবসময় ২D ম্যাট্রিক্সের সারি ও কলামের উপর নির্ভরশীল।

mat[r][c] সাইজের ২D ম্যাট্রিক্সের জন্য আউটপুট লাইন হবে 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 (diagonal) 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

  1. C++-এ ডায়াগোনাল ট্রায়ভার্স II

  2. C++-এ জিগজ্যাগ ট্রি ট্রাভার্সাল

  3. সি++-এ স্পায়রাল ম্যাট্রিক্স III (Spiral Matrix III)

  4. C++-এ আইডেমপটেন্ট ম্যাট্রিক্স যাচাই করার প্রোগ্রাম