Given a square matrix **mat[][]** of size **n * n**. The task is to print all the elements which lie on the sub-diagonal of the given matrix.

**Examples:**

Input:mat[][] = {

{1, 2, 3},

{3, 3, 4, },

{2, 4, 6}}

Output:3 4

Input:mat[][] = {

{1, 2, 3, 4},

{3, 3, 4, 4},

{2, 4, 6, 3},

{1, 1, 1, 3}}

Output:3 4 1

**Approach:** The sub-diagonal of a square matrix is the set of elements that lie directly below the elements comprising the main diagonal. As for main diagonal elements, their indexes are like (i = j), for sub-diagonal elements their indexes are as i = j + 1 (i denotes row and j denotes column).

Hence elements **arr[1][0], arr[2][1], arr[3][2], arr[4][3], ….** are the elements of sub-diagonal.

Either traverse all elements of matrix and print only those where i = j + 1 which requires O(n^{2}) time complexity or print traverse only row from 1 to rowCount – 1 and print elements as arr[row][row – 1].

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` `#define R 4 ` `#define C 4 ` ` ` `// Function to print the sub diagonal ` `// elements of the given matrix ` `void` `printSubDiagonal(` `int` `arr[R][C]) ` `{ ` ` ` `for` `(` `int` `i = 1; i < R; i++) { ` ` ` `cout << arr[i][i - 1] << ` `" "` `; ` ` ` `} ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `arr[R][C] = { { 1, 2, 3, 4 }, ` ` ` `{ 5, 6, 7, 8 }, ` ` ` `{ 9, 10, 11, 12 }, ` ` ` `{ 13, 14, 15, 16 } }; ` ` ` ` ` `printSubDiagonal(arr); ` ` ` ` ` `return` `0; ` `} ` |

## Java

`// Java implementation of the approach ` `import` `java.io.*; ` ` ` `class` `GFG ` `{ ` ` ` `static` `int` `R = ` `4` `; ` `static` `int` `C = ` `4` `; ` ` ` `// Function to print the sub diagonal ` `// elements of the given matrix ` `static` `void` `printSubDiagonal(` `int` `arr[][]) ` `{ ` ` ` `for` `(` `int` `i = ` `1` `; i < R; i++) ` ` ` `{ ` ` ` `System.out.print(arr[i][i - ` `1` `] + ` `" "` `); ` ` ` `} ` `} ` ` ` `// Driver code ` `public` `static` `void` `main (String[] args) ` `{ ` ` ` ` ` `int` `arr[][] = { { ` `1` `, ` `2` `, ` `3` `, ` `4` `}, ` ` ` `{ ` `5` `, ` `6` `, ` `7` `, ` `8` `}, ` ` ` `{ ` `9` `, ` `10` `, ` `11` `, ` `12` `}, ` ` ` `{ ` `13` `, ` `14` `, ` `15` `, ` `16` `} }; ` ` ` ` ` `printSubDiagonal(arr); ` ` ` `} ` `} ` ` ` `// This code is contributed by ajit. ` |

## Python3

`# Python3 implementation of the approach ` `R ` `=` `4` `C ` `=` `4` ` ` `# Function to print the sub diagonal ` `# elements of the given matrix ` `def` `printSubDiagonal(arr): ` ` ` ` ` `for` `i ` `in` `range` `(` `1` `, R): ` ` ` `print` `(arr[i][i ` `-` `1` `], end ` `=` `" "` `) ` ` ` `# Driver code ` `arr ` `=` `[[ ` `1` `, ` `2` `, ` `3` `, ` `4` `], ` ` ` `[ ` `5` `, ` `6` `, ` `7` `, ` `8` `], ` ` ` `[ ` `9` `, ` `10` `, ` `11` `, ` `12` `], ` ` ` `[ ` `13` `, ` `14` `, ` `15` `, ` `16` `]] ` ` ` `printSubDiagonal(arr); ` ` ` `# This code is contributed ` `# by Mohit Kumar ` |

## C#

`// C# implementation of the approach ` `using` `System; ` `class` `GFG ` `{ ` ` ` `static` `int` `R = 4; ` ` ` `static` `int` `C = 4; ` ` ` ` ` `// Function to print the sub diagonal ` ` ` `// elements of the given matrix ` ` ` `static` `void` `printSubDiagonal(` `int` `[,] arr) ` ` ` `{ ` ` ` `for` `(` `int` `i = 1; i < R; i++) ` ` ` `{ ` ` ` `Console.Write(arr[i, i - 1] + ` `" "` `); ` ` ` `} ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `Main () ` ` ` `{ ` ` ` `int` `[,]arr = {{ 1, 2, 3, 4 }, ` ` ` `{ 5, 6, 7, 8 }, ` ` ` `{ 9, 10, 11, 12 }, ` ` ` `{ 13, 14, 15, 16 }}; ` ` ` ` ` `printSubDiagonal(arr); ` ` ` `} ` `} ` ` ` `// This code is contributed by CodeMech. ` |

**Output:**

5 10 15

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.