Skip to content
Related Articles
Open in App
Not now

Related Articles

Program to Print Matrix in Z form

Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 30 Nov, 2022
Improve Article
Save Article

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

https://media.geeksforgeeks.org/wp-content/uploads/Capture-16.png

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

Implementation:

C++




// 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 form
void 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 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




<?php
// PHP program to print a
// square matrix in Z form
 
$MAX = 100;
 
// Function to print a
// square matrix in Z form
function 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.
?>

Javascript




<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 code
var mat = [ [ 4, 5, 6, 8 ],
            [ 1, 2, 3, 1 ],
            [ 7, 8, 9, 4 ],
            [ 1, 8, 7, 5 ] ];
printZform(mat, 4);
 
 
</script>

Output

4 5 6 8 3 8 1 8 7 5 

Time Complexity: O(n)
Auxiliary Space: O(1)

Alternatively, we can print first row and second diagonal except last element and then last row.

C++14




// 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 form
void 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 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
 
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

Python3




# Python program to print a square matrix in Z form
 
# Function to print a square matrix in Z form
def printZform(mat, n):
     
    # print first row except last element
    for i in range(n - 1):
        print(mat[0][i], end=" ")
 
    # Print second diagonal except last element
    for i in range(n - 1):
        print(mat[i][n-i-1], end=" ")
 
    # Print last row
    for i in range(n):
        print(mat[n - 1][i], end=" ")
 
# Driver function
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 Samim Hossain Mondal.

C#




// C# program to print a square matrix in Z form
using 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




// 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 code
var 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

Output

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.

Implementation:

C++14




#include<bits/stdc++.h>
using namespace std;
#define MAX 100
 
// C++ program to print a
// square matrix in Z form
void 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 code
int main()
    {
        int a[][MAX] = { { 4, 5, 6, 8 },
                    { 1, 2, 3, 1 },
                    { 7, 8, 9, 4 },
                    { 1, 8, 7, 5 } };
  
        diag(a, 4);
    }

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




<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>

Output

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. 


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!