Program to Print Matrix in Z form
Last Updated :
16 Feb, 2023
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.
Implementation:
C++
#include <bits/stdc++.h>
using namespace std;
const int MAX = 100;
void printZform( int mat[][MAX], int n)
{
for ( int i = 0; i < n; i++)
cout << mat[0][i] << " " ;
int i = 1, j = n - 2;
while (i < n && j >= 0)
{
cout << mat[i][j] << " " ;
i++;
j--;
}
for ( int i = 1; i < n; i++)
cout << mat[n - 1][i] << " " ;
}
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
import java.io.*;
import java.lang.*;
class GFG {
public static void diag( int arr[][], int n)
{
int i = 0 , j, k;
for (j = 0 ; j < n - 1 ; j++) {
System.out.print(arr[i][j] + " " );
}
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++;
}
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 );
}
}
|
Python3
def Z_print(Test_list):
Result = []
diff = len (Test_list) - len (Test_list[ 0 ])
for i in range ( len (Test_list)):
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 ]
print ( " " * ( len (Test_list) - i - 1 - diff) + str (a))
Result = []
return Result
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)
|
C#
using System;
class GFG {
public static void printZform( int [, ] mat, int n)
{
int i, j;
for (i = 0; i < n; i++) {
Console.Write(mat[0, i] + " " );
}
i = 1;
j = n - 2;
while (i < n && j >= 0)
{
Console.Write(mat[i, j] + " " );
i++;
j--;
}
for (i = 1; i < n; i++)
Console.Write(mat[n - 1, i] + " " );
}
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);
}
}
|
PHP
<?php
$MAX = 100;
function printZform( $mat , $n )
{
for ( $i = 0; $i < $n ; $i ++)
echo $mat [0][ $i ] , " " ;
$i = 1; $j = $n - 2;
while ( $i < $n and $j >= 0)
{
echo $mat [ $i ][ $j ] , " " ;
$i ++;
$j --;
}
for ( $i = 1; $i < $n ; $i ++)
echo $mat [ $n - 1][ $i ] , " " ;
}
$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);
?>
|
Javascript
<script>
function printZform(mat, n)
{
var i, j;
for (i = 0; i < n; i++) {
document.write(mat[0][i] + " " );
}
i = 1;
j = n - 2;
while (i < n && j >= 0)
{
document.write(mat[i][j] + " " );
i++;
j--;
}
for (i = 1; i < n; i++)
document.write(mat[n - 1][i] + " " );
}
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
#include <bits/stdc++.h>
using namespace std;
const int MAX = 100;
void printZform( int mat[][MAX], int n)
{
int i;
for (i = 0; i < n-1; i++)
cout << mat[0][i] << " " ;
for (i=0;i<n-1;i++)
cout<<mat[i][n-i-1]<< " " ;
for (i = 0; i < n; i++)
cout << mat[n - 1][i] << " " ;
}
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
public final class GFG {
public static int MAX = 100 ;
public static void printZform( int [][] mat, int n)
{
int i;
for (i = 0 ; i < n - 1 ; i++) {
System.out.print(mat[ 0 ][i]);
System.out.print( " " );
}
for (i = 0 ; i < n - 1 ; i++) {
System.out.print(mat[i][n - i - 1 ]);
System.out.print( " " );
}
for (i = 0 ; i < n; i++) {
System.out.print(mat[n - 1 ][i]);
System.out.print( " " );
}
}
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 );
}
}
|
Python3
def printZform(mat, n):
for i in range (n - 1 ):
print (mat[ 0 ][i], end = " " )
for i in range (n - 1 ):
print (mat[i][n - i - 1 ], end = " " )
for i in range (n):
print (mat[n - 1 ][i], end = " " )
mat = [ [ 4 , 5 , 6 , 8 ],
[ 1 , 2 , 3 , 1 ],
[ 7 , 8 , 9 , 4 ],
[ 1 , 8 , 7 , 5 ] ];
printZform(mat, 4 )
|
C#
using System;
public static class GFG {
public static int MAX = 100;
public static void printZform( int [, ] mat, int n)
{
int i;
for (i = 0; i < n - 1; i++) {
Console.Write(mat[0, i]);
Console.Write( " " );
}
for (i = 0; i < n - 1; i++) {
Console.Write(mat[i, n - i - 1]);
Console.Write( " " );
}
for (i = 0; i < n; i++) {
Console.Write(mat[n - 1, i]);
Console.Write( " " );
}
}
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);
}
}
|
Javascript
function printZform(mat, n)
{
var i=0, j;
for (i = 0; i < n - 1; i++) {
document.write(mat[0][i] + " " );
}
for (i = 0; i < n - 1; i++) {
document.write(mat[i][n - i - 1] + " " );
}
for (i = 0; i < n; i++) {
document.write(mat[n - 1][i] + " " );
}
}
var mat = [ [ 4, 5, 6, 8 ],
[ 1, 2, 3, 1 ],
[ 7, 8, 9, 4 ],
[ 1, 8, 7, 5 ] ];
printZform(mat, 4);
|
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
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]<< " " ;
}
}
}
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
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
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 = " " )
if __name__ = = '__main__' :
a = [ [ 4 , 5 , 6 , 8 ],
[ 1 , 2 , 3 , 1 ],
[ 7 , 8 , 9 , 4 ],
[ 1 , 8 , 7 , 5 ] ]
diag(a, 4 )
|
C#
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);
}
}
|
Javascript
<script>
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);
</script>
|
Output
4 5 6 8 3 8 1 8 7 5
Time Complexity: O(n*n)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...