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.