Open In App

Pascal Matrix

Last Updated : 13 Dec, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

In mathematics, particularly in matrix theory and combinatorics, the Pascal Matrix is an infinite matrix containing binomial coefficients as its elements. There are three ways to achieve this: as either an upper-triangular matrix, a lower-triangular matrix, or a symmetric matrix. 

The 5 x 5 truncations of these are shown below: 

The elements of the symmetric Pascal Matrix are the binomial coefficient, i.e 
 

Given a positive integer n. The task is to print the Symmetric Pascal Matrix of size n x n. 

Examples: 

Input : n = 5
Output :
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70

Below is the code to implement n x n symmetric pascal matrix: 

C++




// CPP Program to print symmetric pascal matrix.
#include <bits/stdc++.h>
using namespace std;
 
// Print Pascal Matrix
void printpascalmatrix(int n)
{
    int C[2 * n + 1][2 * n + 1] = { 0 };
 
    // Calculate value of Binomial Coefficient in
    // bottom up manner
    for (int i = 0; i <= 2 * n; i++) {
        for (int j = 0; j <= min(i, 2 * n); j++) {
 
            // Base Cases
            if (j == 0 || j == i)
                C[i][j] = 1;
 
            // Calculate value using previously
            // stored values
            else
                C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
        }
    }
 
    // Printing the pascal matrix
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++)
            cout << C[i + j][i] << " ";
 
        cout << endl;
    }
}
 
// Driven Program
int main()
{
    int n = 5;
    printpascalmatrix(n);
    return 0;
}


Java




// java Program to print
// symmetric pascal matrix.
import java.io.*;
 
class GFG
{
    // Print Pascal Matrix
    static void printpascalmatrix(int n)
    {
        int C[][] = new int[2 * n + 1][2 * n + 1];
     
        // Calculate value of Binomial Coefficient in
        // bottom up manner
        for (int i = 0; i <= 2 * n; i++)
        {
            for (int j = 0; j <= Math.min(i, 2 * n); j++)
            {
                // Base Cases
                if (j == 0 || j == i)
                    C[i][j] = 1;
     
                // Calculate value using previously
                // stored values
                else
                    C[i][j] = C[i - 1][j - 1]
                              + C[i - 1][j];
            }
        }
     
        // Printing the pascal matrix
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                System.out.print ( C[i + j][i] +" ");
                System.out.println();
         
        }
    }
     
    // Driven Program
    public static void main (String[] args)
    {
        int n = 5;
        printpascalmatrix(n);
     
    }
}
 
// This code is contributed by vt_m.


Python3




# Python3 Program to print
# symmetric pascal matrix.
 
# Print Pascal Matrix
def printpascalmatrix(n):
    C = [[0 for x in range(2 * n + 1)]
            for y in range(2 * n + 1)]
             
    # Calculate value of
    # Binomial Coefficient
    # in bottom up manner
    for i in range(2 * n + 1):
        for j in range(min(i, 2 * n) + 1):
             
            # Base Cases
            if (j == 0 or j == i):
                C[i][j] = 1;
                 
            # Calculate value
            # using previously
            # stored values
            else:
                C[i][j] = (C[i - 1][j - 1] +
                           C[i - 1][j]);
     
    # Printing the
    # pascal matrix
    for i in range(n):
        for j in range(n):
            print(C[i + j][i],
                   end = " ");
        print();
     
# Driver Code
n = 5;
printpascalmatrix(n);
 
# This code is contributed by mits


C#




// C# program to print
// symmetric pascal matrix.
using System;
 
class GFG {
     
    // Print Pascal Matrix
    static void printpascalmatrix(int n)
    {
        int[, ] C = new int[2 * n + 1, 2 * n + 1];
 
        // Calculate value of Binomial Coefficient
        // in bottom up manner
        for (int i = 0; i <= 2 * n; i++) {
             
            for (int j = 0; j <= Math.Min(i, 2 * n); j++) {
                 
                // Base Cases
                if (j == 0 || j == i)
                    C[i, j] = 1;
 
                // Calculate value using previously
                // stored values
                else
                    C[i, j] = C[i - 1, j - 1]
                            + C[i - 1, j];
            }
        }
 
        // Printing the pascal matrix
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++)
                Console.Write(C[i + j, i] + " ");
            Console.WriteLine();
        }
    }
 
    // Driven Program
    public static void Main()
    {
        int n = 5;
        printpascalmatrix(n);
    }
}
 
// This code is contributed by vt_m.


PHP




<?php
// PHP Program to print symmetric
// pascal matrix.
 
// Print Pascal Matrix
function printpascalmatrix($n)
{
    $C[2 * $n + 1][2 * $n + 1] = (0);
 
    // Calculate value of Binomial
    // Coefficient in bottom up manner
    for ($i = 0; $i <= 2 * $n; $i++)
    {
        for ($j = 0; $j <= min($i, 2 * $n); $j++)
        {
 
            // Base Cases
            if ($j == 0 || $j == $i)
                $C[$i][$j] = 1;
 
            // Calculate value
            // using previously
            // stored values
            else
                $C[$i][$j] = $C[$i - 1][$j - 1] +
                                 $C[$i - 1][$j];
        }
    }
 
    // Printing the pascal matrix
    for ($i = 0; $i < $n; $i++) {
        for ( $j = 0; $j < $n; $j++)
            echo $C[$i + $j][$i], " ";
 
        echo "\n";
    }
}
     
    // Driver Code
    $n = 5;
    printpascalmatrix($n);
 
// This code is contributed by aj_36
?>


Javascript




<script>
 
// JavaScript Program to print
// symmetric pascal matrix.
 
    // Print Pascal Matrix
    function printpascalmatrix(n)
    {
        let C = new Array(2 * n + 1);
         
        // Loop to create 2D array using 1D array
        for (var i = 0; i < C.length; i++) {
            C[i] = new Array(2);
        }
       
        // Calculate value of Binomial Coefficient in
        // bottom up manner
        for (let i = 0; i <= 2 * n; i++)
        {
            for (let j = 0; j <= Math.min(i, 2 * n); j++)
            {
                // Base Cases
                if (j == 0 || j == i)
                    C[i][j] = 1;
       
                // Calculate value using previously
                // stored values
                else
                    C[i][j] = C[i - 1][j - 1]
                              + C[i - 1][j];
            }
        }
       
        // Printing the pascal matrix
        for (let i = 0; i < n; i++)
        {
            for (let j = 0; j < n; j++)
                document.write( C[i + j][i] +" ");
                document.write("<br/>");
           
        }
    }
 
 
// Driver code
         
        let n = 5;
        printpascalmatrix(n);
                   
</script>


Output

1 1 1 1 1 
1 2 3 4 5 
1 3 6 10 15 
1 4 10 20 35 
1 5 15 35 70 

Time Complexity: O(N2
Auxiliary Space: O(N2)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads