# Cartesian Product of Two Sets

• Difficulty Level : Basic
• Last Updated : 19 Oct, 2022

Let A and B be two sets, Cartesian productA Ã— B is the set of all ordered pair of elements from A and B
A Ã— B = {{x, y} : x âˆˆ A, y âˆˆ B}

Let A = {a, b, c} and B = {d, e, f}
The Cartesian product of two sets is
A x B = {a, d}, {a, e}, {a, f}, {b, d}, {b, e}, {b, f}, {c, d}, {c, e}, {c, f}}
A has 3 elements and B also has 3 elements. The Cartesian Product has 3 x 3 = 9 elements.
In general, if there are m elements in set A and n elements in B, the number of elements in the Cartesian Product is m x n

Given two finite non-empty sets, write a program to print Cartesian Product.
Examples :

Input : A = {1, 2}, B = {3, 4}
Output : A Ã— B = {{1, 3}, {1, 4}, {2, 3}, {2, 4}}

Input : A = {1, 2, 3} B = {4, 5, 6}
Output : A Ã— B = {{1, 4}, {1, 5}, {1, 6}, {2, 4},
{2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}}

## CPP

 `// C++ Program to find the Cartesian Product of Two Sets``#include ` `void` `findCart(``int` `arr1[], ``int` `arr2[], ``int` `n, ``int` `n1)``{``    ``for` `(``int` `i = 0; i < n; i++)``        ``for` `(``int` `j = 0; j < n1; j++)``            ``printf``(``"{%d, %d}, "``, arr1[i], arr2[j]);``}` `int` `main()``{``    ``int` `arr1[] = { 1, 2, 3 }; ``// first set``    ``int` `arr2[] = { 4, 5, 6 }; ``// second set``    ``int` `n1 = ``sizeof``(arr1) / ``sizeof``(arr1[0]);``    ``int` `n2 = ``sizeof``(arr2) / ``sizeof``(arr2[0]);``    ``findCart(arr1, arr2, n1, n2);``    ``return` `0;``}`

## Java

 `// Java Program to find the``// Cartesian Product of Two Sets``import` `java.io.*;``import` `java.util.*;` `class` `GFG {` `    ``static` `void` `findCart(``int` `arr1[], ``int` `arr2[], ``int` `n,``                         ``int` `n1)``    ``{``        ``for` `(``int` `i = ``0``; i < n; i++)``            ``for` `(``int` `j = ``0``; j < n1; j++)``                ``System.out.print(``"{"` `+ arr1[i] + ``", "``                                 ``+ arr2[j] + ``"}, "``);``    ``}``    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``// first set``        ``int` `arr1[] = { ``1``, ``2``, ``3` `};` `        ``// second set``        ``int` `arr2[] = { ``4``, ``5``, ``6` `};` `        ``int` `n1 = arr1.length;``        ``int` `n2 = arr2.length;``        ``findCart(arr1, arr2, n1, n2);``    ``}``}` `// This code is contributed by Nikita Tiwari.`

## Python3

 `# Python3 Program to find the``# Cartesian Product of Two Sets`  `def` `findCart(arr1, arr2, n, n1):` `    ``for` `i ``in` `range``(``0``, n):``        ``for` `j ``in` `range``(``0``, n1):``            ``print``(``"{"``, arr1[i], ``", "``, arr2[j], ``"}, "``, sep``=``"``", end="``")`  `# Driver code``arr1 ``=` `[``1``, ``2``, ``3``]  ``# first set``arr2 ``=` `[``4``, ``5``, ``6``]  ``# second set` `n1 ``=` `len``(arr1)  ``# sizeof(arr1[0])``n2 ``=` `len``(arr2)  ``# sizeof(arr2[0]);` `findCart(arr1, arr2, n1, n2)` `# This code is contributed``# by Smitha Dinesh Semwal`

## C#

 `// C# Program to find the``// Cartesian Product of Two Sets``using` `System;` `class` `GFG {` `    ``static` `void` `findCart(``int``[] arr1, ``int``[] arr2, ``int` `n,``                         ``int` `n1)``    ``{``        ``for` `(``int` `i = 0; i < n; i++)``            ``for` `(``int` `j = 0; j < n1; j++)``                ``Console.Write(``"{"` `+ arr1[i] + ``", "` `+ arr2[j]``                              ``+ ``"}, "``);``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{` `        ``// first set``        ``int``[] arr1 = { 1, 2, 3 };` `        ``// second set``        ``int``[] arr2 = { 4, 5, 6 };` `        ``int` `n1 = arr1.Length;``        ``int` `n2 = arr2.Length;` `        ``findCart(arr1, arr2, n1, n2);``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output

`{1, 4}, {1, 5}, {1, 6}, {2, 4}, {2, 5}, {2, 6}, {3, 4}, {3, 5}, {3, 6}, `

Time complexity: O(M*N) where M and N are size of given sets
Auxiliary space: O(1) because it is using constant space for variables

Practical Examples:
1) A set of playing cards is Cartesian product of a four element set to a set of 13 elements.
2) A two dimensional coordinate system is a Cartesian product of two sets of real numbers.
Reference:
https://en.wikipedia.org/wiki/Cartesian_product

My Personal Notes arrow_drop_up