Program to Print Matrix in Z form

28 Jun, 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
 
We need to traverse the first row of the matrix then the second diagonal and then the last row. 
C++
Java
Python3
C#
PHP
Javascript
// CPP program to print a square matrix in Z form#include <bits/stdc++.h>using namespace std;const int MAX = 100; // Function to print a square matrix in Z formvoid printZform(int mat[][MAX], int n){    // print first row    for (int i = 0; i < n; i++)        cout << mat[0][i] << " ";     // Print second diagonal    int i = 1, j = n - 2;    while (i < n && j >= 0)    {        cout << mat[i][j] << " ";        i++;        j--;    }     // Print last row    for (int i = 1; i < n; i++)        cout << mat[n - 1][i] << " ";} // Driver functionint 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 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)>
# Python Program to print a Square# Matrix in Z form.  # Function to print Matrix in Z formdef 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 Functionif __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# program to print a square// matrix in Z formusing 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// PHP program to print a// square matrix in Z form $MAX = 100; // Function to print a// square matrix in Z formfunction printZform( $mat, $n){         // print first row    for($i = 0; $i < $n; $i++)        echo $mat[0][$i] , " ";     // Print diagonal    $i = 1;$j = $n - 2;         // print diagonal    while ($i < $n and $j >= 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.?>
<script>   // JavaScript program to print a square// matrix in Z form function printZform(mat, n){    var i, j;         // print first row    for (i = 0; i < n; i++) {        document.write(mat[0][i] + " ");    }    // Print diagonal    i = 1;    j = n - 2;     while (i < n && j >= 0) // print diagonal    {        document.write(mat[i][j] + " ");        i++;        j--;    }     // Print last row    for (i = 1; i < n; i++)        document.write(mat[n - 1][i] + " ");}// Driver codevar mat = [ [ 4, 5, 6, 8 ],            [ 1, 2, 3, 1 ],            [ 7, 8, 9, 4 ],            [ 1, 8, 7, 5 ] ];printZform(mat, 4);  </script>
Alternatively, we can print first row and second diagonal except last element and then last row.
C++14
Java
C#
Javascript
// CPP program to print a square matrix in Z form#include <bits/stdc++.h>using namespace std;const int MAX = 100; // Function to print a square matrix in Z formvoid printZform(int mat[][MAX], int n){    int i;    // print first row except last element    for (i = 0; i < n-1; i++)        cout << mat[0][i] << " ";     // Print second diagonal except last element    for(i=0;i<n-1;i++)    cout<<mat[i][n-i-1]<<" ";     // Print last row    for (i = 0; i < n; i++)        cout << mat[n - 1][i] << " ";} // Driver functionint 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 program to print a square matrix in Z form public final class GFG {    public static int MAX = 100;     // Function to print a square matrix in Z form    public static void printZform(int[][] mat, int n)    {        int i;         // print first row except last element        for (i = 0; i < n - 1; i++) {            System.out.print(mat[0][i]);            System.out.print(" ");        }         // Print second diagonal except last element        for (i = 0; i < n - 1; i++) {            System.out.print(mat[i][n - i - 1]);            System.out.print(" ");        }         // Print last row        for (i = 0; i < n; i++) {            System.out.print(mat[n - 1][i]);            System.out.print(" ");        }    }     // Driver function    public static void main(String[] args)    {        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 Aarti_Rathi
// C# program to print a square matrix in Z formusing System; public static class GFG {  public static int MAX = 100;   // Function to print a square matrix in Z form  public static void printZform(int[, ] mat, int n)  {    int i;     // print first row except last element    for (i = 0; i < n - 1; i++) {      Console.Write(mat[0, i]);      Console.Write(" ");    }     // Print second diagonal except last element    for (i = 0; i < n - 1; i++) {      Console.Write(mat[i, n - i - 1]);      Console.Write(" ");    }     // Print last row    for (i = 0; i < n; i++) {      Console.Write(mat[n - 1, i]);      Console.Write(" ");    }  }   // Driver function  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 Aarti_Rathi
// JavaScript program to print a square// matrix in Z form  function printZform(mat, n){    var i=0, j;         // print first row except last element        for (i = 0; i < n - 1; i++) {           document.write(mat[0][i] + " ");        }          // Print second diagonal except last element        for (i = 0; i < n - 1; i++) {            document.write(mat[i][n - i - 1] + " ");        }          // Print last row        for (i = 0; i < n; i++) {            document.write(mat[n - 1][i] + " ");        }    }   // Driver codevar 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 Aarti_Rathi
4 5 6 8 3 8 1 8 7 5 
Time Complexity: O(n)
Auxiliary Space: O(1)
Alternate Simpler Implementation: Thanks to Aathishithan for suggesting this. 
C++14
Java
Python3
C#
Javascript
#include<bits/stdc++.h>using namespace std;#define MAX 100 // C++ program to print a// square matrix in Z formvoid diag(int arr[][MAX],int n){        int i = 0, j, k;        for(i = 0;i < n;i++){           for(j = 0;j < n;j++){              if(i == 0)                cout<<arr[i][j]<<" ";               else if(j==n-i-1)                    cout<<arr[i][j]<<" ";               else if(i == n-1)                   cout<<arr[i][j]<<" ";           }        }} //driver's codeint main()    {        int a[][MAX] = { { 4, 5, 6, 8 },                    { 1, 2, 3, 1 },                    { 7, 8, 9, 4 },                    { 1, 8, 7, 5 } };          diag(a, 4);    }
// 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 program to print# square matrix in Z formdef 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 codeif __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# program to print a// square matrix in Z formusing 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.
<script> // Javascript program to print a// square matrix in Z form   function diag(arr, n){    var i = 0, j;    for(i = 0; i < n; i++)    {       for(j = 0; j < n; j++)       {          if(i == 0){            document.write(arr[i][j]+" ");          } else if(i == j){               document.write(arr[i][j]+" ");          } else if(i == n-1){               document.write(arr[i][j]+" ");          }       }    }      } var 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 rutvik_56. </script>
4 5 6 8 3 8 1 8 7 5 
Time Complexity: O(n*n)
Auxiliary Space: O(1)
This article is contributed by Aarti_Rathi and 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.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
vt_m
Aathishithan
mohit kumar 29
gittysatyam
noob2000
hariaditya
rrrtnx
rutvik_56
rishabhmittal
prophet1999
sachinvinod1904
adi1212
Matrix
School Programming
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.