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

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++



filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to print the required pattern
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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
  
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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..
  
}

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to print the required pattern 
  
// Function to print the required pattern 
function printPattern($n
    // arr[][] will store the pattern matrix 
    $arr[][] = array($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++) 
        
            echo($arr[$i][$j] . " "); 
        
        echo("\n");
    
  
// Driver code 
$n = 3; 
  
printPattern($n); 
  
// This code is contributed 
// by Mukul Singh
?>

chevron_right


Output:

1 2 4 
3 5 7 
6 8 9


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.