# Print numbers in matrix diagonal pattern

Given an integer N, the task is to print the given pattern.
Examples:

```Input: 3
Output:
1 2 4
3 5 7
6 8 9

Input: 4
Output:
1 2 4 7
3 5 8 11
6 9 12 14
10 13 15 16
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• Create a matrix of size N X N which will store the pattern before printing.
• Store the elements in the upper triangle of the pattern. As observed the row index increases by 1 and column index decreases by 1 as you move down the diagonal.
• Once the upper triangle is completed then store the elements of the lower triangle in similar way as the upper triangle i.e. row index increases by 1 and column index decreases by 1 as you move down the diagonal.

Below is the implementation of the above approach:

## C++

 `// C++ program to print the required pattern ` `#include ` `using` `namespace` `std; ` ` `  `// Function to print the required pattern ` `void` `printPattern(``int` `n) ` `{ ` `    ``// arr[][] will store the pattern matrix ` `    ``int` `arr[n][n], k, i, j, p = 1, f; ` ` `  `    ``// Store the values for upper triangle ` `    ``// of the pattern ` `    ``for` `(k = 0; k < n; k++) { ` `        ``j = k; ` `        ``i = 0; ` `        ``while` `(j >= 0) { ` `            ``arr[i][j] = p; ` `            ``p++; ` `            ``i = i + 1; ` `            ``j = j - 1; ` `        ``} ` `    ``} ` ` `  `    ``// Store the values for lower triangle ` `    ``// of the pattern ` `    ``for` `(k = 1; k < n; k++) { ` `        ``i = k; ` `        ``j = n - 1; ` `        ``f = k; ` `        ``while` `(j >= f) { ` `            ``arr[i][j] = p; ` `            ``p++; ` `            ``i = i + 1; ` `            ``j = j - 1; ` `        ``} ` `    ``} ` ` `  `    ``// Print the pattern ` `    ``for` `(i = 0; i < n; i++) { ` `        ``for` `(j = 0; j < n; j++) { ` `            ``cout << arr[i][j] << ``" "``; ` `        ``} ` `        ``cout << endl; ` `    ``} ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 3; ` ` `  `    ``printPattern(n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to print the required pattern  ` ` `  `public` `class` `GFG{ ` ` `  `    ``// Function to print the required pattern  ` `    ``static` `void` `printPattern(``int` `n)  ` `    ``{  ` `        ``// arr[][] will store the pattern matrix  ` `        ``int` `arr[][] = ``new` `int``[n][n] ; ` `        ``int` `k, i, j, p = ``1``, f ;  ` `     `  `        ``// Store the values for upper triangle  ` `        ``// of the pattern  ` `        ``for` `(k = ``0``; k < n; k++) {  ` `            ``j = k;  ` `            ``i = ``0``;  ` `            ``while` `(j >= ``0``) {  ` `                ``arr[i][j] = p;  ` `                ``p++;  ` `                ``i = i + ``1``;  ` `                ``j = j - ``1``;  ` `            ``}  ` `        ``}  ` `     `  `        ``// Store the values for lower triangle  ` `        ``// of the pattern  ` `        ``for` `(k = ``1``; k < n; k++) {  ` `            ``i = k;  ` `            ``j = n - ``1``;  ` `            ``f = k;  ` `            ``while` `(j >= f) {  ` `                ``arr[i][j] = p;  ` `                ``p++;  ` `                ``i = i + ``1``;  ` `                ``j = j - ``1``;  ` `            ``}  ` `        ``}  ` `     `  `        ``// Print the pattern  ` `        ``for` `(i = ``0``; i < n; i++) {  ` `            ``for` `(j = ``0``; j < n; j++) {  ` `                ``System.out.print(arr[i][j] + ``" "``) ;  ` `            ``}  ` `            ``System.out.println() ; ` `        ``}  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `main(String []args)  ` `    ``{  ` `        ``int` `n = ``3``;  ` `     `  `        ``printPattern(n);  ` `    ``}  ` `    ``// This code is contributed by Ryuga ` ` `  `} `

## Python3

 `# Python 3 program to print the ` `# required pattern ` ` `  `# Function to print the required pattern ` `def` `printPattern(n): ` `     `  `    ``# arr[][] will store the pattern matrix ` `    ``arr ``=` `[[``0` `for` `i ``in` `range``(n)] ` `              ``for` `j ``in` `range``(n)] ` `    ``p ``=` `1` ` `  `    ``# Store the values for upper  ` `    ``# triangle of the pattern ` `    ``for` `k ``in` `range``(n): ` `        ``j ``=` `k ` `        ``i ``=` `0` `        ``while` `(j >``=` `0``): ` `            ``arr[i][j] ``=` `p ` `            ``p ``+``=` `1` `            ``i ``=` `i ``+` `1` `            ``j ``=` `j ``-` `1` `     `  `    ``# Store the values for lower triangle ` `    ``# of the pattern ` `    ``for` `k ``in` `range``(``1``, n, ``1``): ` `        ``i ``=` `k ` `        ``j ``=` `n ``-` `1` `        ``f ``=` `k ` `        ``while` `(j >``=` `f): ` `            ``arr[i][j] ``=` `p ` `            ``p ``+``=` `1` `            ``i ``=` `i ``+` `1` `            ``j ``=` `j ``-` `1` `     `  `    ``# Print the pattern ` `    ``for` `i ``in` `range``(``0``, n, ``1``): ` `        ``for` `j ``in` `range``(``0``, n, ``1``): ` `            ``print``(arr[i][j], end ``=` `" "``) ` `         `  `        ``print``(``"\n"``, end ``=` `"") ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``n ``=` `3` ` `  `    ``printPattern(n) ` ` `  `# This code is contributed by ` `# Sanjit_Prasad `

## C#

 `// C# program to print the required pattern  ` `using` `System; ` ` `  `public` `class` `GFG{ ` ` `  `    ``// Function to print the required pattern  ` `    ``static` `void` `printPattern(``int` `n)  ` `    ``{  ` `        ``// arr[][] will store the pattern matrix  ` `        ``int` `[,]arr = ``new` `int``[n,n] ; ` `        ``int` `k, i, j, p = 1, f ;  ` `     `  `        ``// Store the values for upper triangle  ` `        ``// of the pattern  ` `        ``for` `(k = 0; k < n; k++) {  ` `            ``j = k;  ` `            ``i = 0;  ` `            ``while` `(j >= 0) {  ` `                ``arr[i,j] = p;  ` `                ``p++;  ` `                ``i = i + 1;  ` `                ``j = j - 1;  ` `            ``}  ` `        ``}  ` `     `  `        ``// Store the values for lower triangle  ` `        ``// of the pattern  ` `        ``for` `(k = 1; k < n; k++) {  ` `            ``i = k;  ` `            ``j = n - 1;  ` `            ``f = k;  ` `            ``while` `(j >= f) {  ` `                ``arr[i,j] = p;  ` `                ``p++;  ` `                ``i = i + 1;  ` `                ``j = j - 1;  ` `            ``}  ` `        ``}  ` `     `  `        ``// Print the pattern  ` `        ``for` `(i = 0; i < n; i++) {  ` `            ``for` `(j = 0; j < n; j++) {  ` `                ``Console.Write(arr[i,j] + ``" "``) ;  ` `            ``}  ` `            ``Console.WriteLine() ; ` `        ``}  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `Main()  ` `    ``{  ` `        ``int` `n = 3;  ` `     `  `        ``printPattern(n);  ` `    ``}  ` `    ``// This code is contributed by inder_verma.. ` ` `  `} `

## PHP

 `= 0) ` `        ``{  ` `            ``\$arr``[``\$i``][``\$j``] = ``\$p``;  ` `            ``\$p``++;  ` `            ``\$i` `= ``\$i` `+ 1;  ` `            ``\$j` `= ``\$j` `- 1;  ` `        ``}  ` `    ``}  ` ` `  `    ``// Store the values for lower  ` `    ``// triangle of the pattern  ` `    ``for` `(``\$k` `= 1; ``\$k` `< ``\$n``; ``\$k``++)  ` `    ``{  ` `        ``\$i` `= ``\$k``;  ` `        ``\$j` `= ``\$n` `- 1;  ` `        ``\$f` `= ``\$k``;  ` `        ``while` `(``\$j` `>= ``\$f``)  ` `        ``{  ` `            ``\$arr``[``\$i``][``\$j``] = ``\$p``;  ` `            ``\$p``++;  ` `            ``\$i` `= ``\$i` `+ 1;  ` `            ``\$j` `= ``\$j` `- 1;  ` `        ``}  ` `    ``}  ` ` `  `    ``// Print the pattern  ` `    ``for` `(``\$i` `= 0; ``\$i` `< ``\$n``; ``\$i``++)  ` `    ``{  ` `        ``for` `(``\$j` `= 0; ``\$j` `< ``\$n``; ``\$j``++)  ` `        ``{  ` `            ``echo``(``\$arr``[``\$i``][``\$j``] . ``" "``);  ` `        ``}  ` `        ``echo``(``"\n"``); ` `    ``}  ` `}  ` ` `  `// Driver code  ` `\$n` `= 3;  ` ` `  `printPattern(``\$n``);  ` ` `  `// This code is contributed  ` `// by Mukul Singh ` `?> `

Output:

```1 2 4
3 5 7
6 8 9
```

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.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.