# 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++ 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 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 ` ` `  `} `

 `# 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# 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.. ` ` `  `} `

 `= 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.

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.

Article Tags :
Practice Tags :