# Program to Print Matrix in Z form

• Difficulty Level : Basic
• Last Updated : 17 Jan, 2022

Given a square matrix of order n*n, we need to print elements of the matrix in Z form

```    Input: [[4, 5, 6, 8],
[1, 2, 3, 1],
[7, 8, 9, 4],
[1, 8, 7, 5]]

Output: 4 5 6 8
3
8
1 8 7 5

Input: [[4, 5, 6, 8, 5],
[1, 2, 3, 1, 4],
[7, 8, 9, 4, 7],
[1, 8, 7, 5, 2],
[7, 9, 5, 6, 9],
[9, 4, 5, 6, 6]]

Output: 4 5 6 8 5
1
9
8
7
9 4 5 6 6```

Complexity O(n)

We need to traverse the first row of the matrix then the second diagonal and then the last row.

## C++

 `// CPP program to print a square matrix in Z form``#include ``using` `namespace` `std;``const` `int` `MAX = 100;` `// Function to print a square matrix in Z form``void` `printZform(``int` `mat[][MAX], ``int` `n)``{``    ``// print first row``    ``for` `(``int` `i = 0; i < n; i++)``        ``cout << mat[0][i] << ``" "``;` `    ``// Print diagonal``    ``int` `i = 1, j = n - 2;``    ``while` `(i < n && j >= 0) ``// print diagonal``    ``{``        ``cout << mat[i][j] << ``" "``;``        ``i++;``        ``j--;``    ``}` `    ``// Print last row``    ``for` `(``int` `i = 1; i < n; i++)``        ``cout << mat[n - 1][i] << ``" "``;``}` `// Driver function``int` `main()``{``    ``int` `mat[][MAX] = { { 4, 5, 6, 8 },``                       ``{ 1, 2, 3, 1 },``                       ``{ 7, 8, 9, 4 },``                       ``{ 1, 8, 7, 5 } };``    ``printZform(mat, 4);``    ``return` `0;``}`

## Java

 `// Java program to print a``// square matrix in Z form` `import` `java.io.*;``import` `java.lang.*;` `class` `GFG {``    ``public` `static` `void` `diag(``int` `arr[][], ``int` `n)``    ``{``        ``int` `i = ``0``, j, k;` `        ``// print first row``        ``for` `(j = ``0``; j < n - ``1``; j++) {``            ``System.out.print(arr[i][j] + ``" "``);``        ``}` `        ``// Print diagonal``        ``k = ``1``;``        ``for` `(i = ``0``; i < n - ``1``; i++) {``            ``for` `(j = ``0``; j < n; j++) {``                ``if` `(j == n - k) {``                    ``System.out.print(arr[i][j] + ``" "``);``                    ``break``;``                ``}``            ``}``            ``k++;``        ``}``        ``// Print last row``        ``i = n - ``1``;``        ``for` `(j = ``0``; j < n; j++)``            ``System.out.print(arr[i][j] + ``" "``);` `        ``System.out.print(``"\n"``);``    ``}` `    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `a[][] = { { ``4``, ``5``, ``6``, ``8` `},``                      ``{ ``1``, ``2``, ``3``, ``1` `},``                      ``{ ``7``, ``8``, ``9``, ``4` `},``                      ``{ ``1``, ``8``, ``7``, ``5` `} };` `        ``diag(a, ``4``);``    ``}``}` `// Code contributed by Mohit Gupta_OMG <(0_o)>`

## Python3

 `# Python Program to print a Square``# Matrix in Z form.`  `# Function to print Matrix in Z form``def` `Z_print(Test_list):` `    ``Result ``=` `[]  ``# Empty list to Store Final Result` `    ``# To find the difference b/w whole matrix and first elements``    ``diff ``=` `len``(Test_list)``-``len``(Test_list[``0``])` `    ``# Loop to find elements for Z form and to print it.``    ``for` `i ``in` `range``(``len``(Test_list)):` `        ``# If the elements if First or Last then print it as it is...``        ``if` `i ``=``=` `0` `or` `i ``=``=` `len``(Test_list)``-``1``:``            ``Result.append(Test_list[i])``            ``Result ``=` `Result[``0``]``            ``print``(``*``Result)``            ``Result ``=` `[]``        ``else``:``            ``Result.append(Test_list[i][``len``(Test_list)``-``i``-``1``-``diff])``            ``a ``=` `Result[``0``]``            ``# Give require spaces for printing elements...``            ``print``(``"  "` `*` `(``len``(Test_list)``-``i``-``1``-``diff) ``+` `str``(a))``            ``Result ``=` `[]  ``# Empty list again for storing next pattern` `    ``return` `Result`  `# Driver Function``if` `__name__ ``=``=` `"__main__"``:``    ``Test_list1 ``=` `[[``4``, ``5``, ``6``, ``8``],``                  ``[``1``, ``2``, ``3``, ``1``],``                  ``[``7``, ``8``, ``9``, ``4``],``                  ``[``1``, ``8``, ``7``, ``5``]]``    ``Z_print(Test_list1)  ``# Passing Matrix to Z_print function`

## C#

 `// C# program to print a square``// matrix in Z form``using` `System;` `class` `GFG {` `    ``public` `static` `void` `printZform(``int``[, ] mat, ``int` `n)``    ``{` `        ``int` `i, j;` `        ``// print first row``        ``for` `(i = 0; i < n; i++) {``            ``Console.Write(mat[0, i] + ``" "``);``        ``}` `        ``// Print diagonal``        ``i = 1;``        ``j = n - 2;` `        ``while` `(i < n && j >= 0) ``// print diagonal``        ``{``            ``Console.Write(mat[i, j] + ``" "``);``            ``i++;``            ``j--;``        ``}` `        ``// Print last row``        ``for` `(i = 1; i < n; i++)``            ``Console.Write(mat[n - 1, i] + ``" "``);``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int``[, ] mat = { { 4, 5, 6, 8 },``                        ``{ 1, 2, 3, 1 },``                        ``{ 7, 8, 9, 4 },``                        ``{ 1, 8, 7, 5 } };` `        ``printZform(mat, 4);``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 `= 0)``    ``{``        ``echo` `\$mat``[``\$i``][``\$j``] , ``" "``;``        ``\$i``++;``        ``\$j``--;``    ``}` `    ``// Print last row``    ``for` `( ``\$i` `= 1; ``\$i` `< ``\$n``; ``\$i``++)``        ``echo` `\$mat``[``\$n` `- 1][``\$i``] , ``" "``;``}``    ` `    ``// Driver Code``    ``\$mat` `= ``array``(``array``(4, 5, 6, 8),``                 ``array``(1, 2, 3, 1),``                 ``array``(7, 8, 9, 4),``                 ``array``(1, 8, 7, 5));``    ``printZform(``\$mat``, 4);``    ` `// This code is contributed by anuj_67.``?>`

## Javascript

 ``
Output
`4 5 6 8 3 8 1 8 7 5 `

Alternate Simpler Implementation:
Thanks to Aathishithan for suggesting this.

## Java

 `// Java program to print a``// square matrix in Z form`` ` `import` `java.lang.*;``import` `java.io.*;`` ` `class` `GFG {``    ``public` `static` `void` `diag(``int` `arr[][], ``int` `n)``    ``{``        ``int` `i = ``0``, j, k;``        ``for``(i = ``0``;i < n;i++){``           ``for``(j = ``0``;j < n;j++){``              ``if``(i == ``0``){``                ``System.out.print(arr[i][j]+``" "``);``              ``} ``else` `if``(j==n-i-``1``){``                   ``System.out.print(arr[i][j]+``" "``);``              ``} ``else` `if``(i == n-``1``){``                   ``System.out.print(arr[i][j]+``" "``);``              ``}``           ``}``        ``}``         ` `    ``}`` ` `    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `a[][] = { { ``4``, ``5``, ``6``, ``8` `},``                    ``{ ``1``, ``2``, ``3``, ``1` `},``                    ``{ ``7``, ``8``, ``9``, ``4` `},``                    ``{ ``1``, ``8``, ``7``, ``5` `} };`` ` `        ``diag(a, ``4``);``    ``}``}`

## Python3

 `# Python3 program to print``# square matrix in Z form``def` `diag(arr, n):``    ``for` `i ``in` `range``(n):``        ``for` `j ``in` `range``(n):``            ``if``(i ``=``=` `0``):``                ``print``(arr[i][j], end ``=` `" "``)``            ``elif``(j ``=``=` `n``-``(i``+``1``)):``                ``print``(arr[i][j], end ``=` `" "``)``            ``elif``(i ``=``=` `n ``-` `1``):``                ``print``(arr[i][j], end ``=` `" "``)`` ` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``a``=` `[ [ ``4``, ``5``, ``6``, ``8` `],``        ``[ ``1``, ``2``, ``3``, ``1` `],``        ``[ ``7``, ``8``, ``9``, ``4` `],``        ``[ ``1``, ``8``, ``7``, ``5` `] ]`` ` `    ``diag(a, ``4``)``# This code is contributed by mohit kumar 29 and improved by Hari Aditya`

## C#

 `// C# program to print a``// square matrix in Z form``using` `System;`` ` `public` `class` `GFG {``    ``public` `static` `void` `diag(``int` `[,]arr, ``int` `n)``    ``{``        ``int` `i = 0, j;``        ``for``(i = 0; i < n; i++)``        ``{``           ``for``(j = 0; j < n; j++)``           ``{``              ``if``(i == 0){``                ``Console.Write(arr[i, j]+``" "``);``              ``} ``else` `if``(i == j){``                   ``Console.Write(arr[i, j]+``" "``);``              ``} ``else` `if``(i == n-1){``                   ``Console.Write(arr[i, j]+``" "``);``              ``}``           ``}``        ``}``         ` `    ``}`` ` `    ``public` `static` `void` `Main(``string``[] args)``    ``{``        ``int` `[,]a = { { 4, 5, 6, 8 },``                    ``{ 1, 2, 3, 1 },``                    ``{ 7, 8, 9, 4 },``                    ``{ 1, 8, 7, 5 } };`` ` `        ``diag(a, 4);``    ``}``}` `// This code is contributed by rrrtnx.`

## Javascript

 ``
Output
`4 5 6 8 3 8 1 8 7 5 `

This article is contributed by R_Raj. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.