From 66236fa7a3fc117422f9f8d04a04d0f87f72d52e Mon Sep 17 00:00:00 2001 From: AnandiBhardwaj <109234205+AnandiBhardwaj@users.noreply.github.com> Date: Sun, 30 Oct 2022 20:02:17 +0530 Subject: [PATCH] Adding program to print matrix in zig-zag --- Matrix in zig-zag | 100 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 Matrix in zig-zag diff --git a/Matrix in zig-zag b/Matrix in zig-zag new file mode 100644 index 0000000..4183577 --- /dev/null +++ b/Matrix in zig-zag @@ -0,0 +1,100 @@ + +#include +using namespace std; +#define C 3 + + +void zigZagMatrix(int arr[][C], int n, int m) +{ + int row = 0, col = 0; + + + bool row_inc = 0; + + int mn = min(m, n); + for (int len = 1; len <= mn; ++len) { + for (int i = 0; i < len; ++i) { + cout << arr[row][col] << " "; + + if (i + 1 == len) + break; + if (row_inc) + ++row, --col; + else + --row, ++col; + } + + if (len == mn) + break; + + if (row_inc) + ++row, row_inc = false; + else + ++col, row_inc = true; + } + + if (row == 0) { + if (col == m - 1) + ++row; + else + ++col; + row_inc = 1; + } + else { + if (row == n - 1) + ++col; + else + ++row; + row_inc = 0; + } + + int MAX = max(m, n) - 1; + for (int len, diag = MAX; diag > 0; --diag) { + + if (diag > mn) + len = mn; + else + len = diag; + + for (int i = 0; i < len; ++i) { + cout << arr[row][col] << " "; + + if (i + 1 == len) + break; + + if (row_inc) + ++row, --col; + else + ++col, --row; + } + + if (row == 0 || col == m - 1) { + if (col == m - 1) + ++row; + else + ++col; + + row_inc = true; + } + + else if (col == 0 || row == n - 1) { + if (row == n - 1) + ++col; + else + ++row; + + row_inc = false; + } + } +} + +// Driver code +int main() +{ + int matrix[][3] = { { 1, 2, 3 }, + { 4, 5, 6 }, + { 7, 8, 9 } }; + zigZagMatrix(matrix, 3, 3); + + return 0; +}