Open In App

Program to Print Matrix in Z form

Improve
Improve
Like Article
Like
Save
Share
Report

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)

 



Last Updated : 16 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads