VOOZH about

URL: https://www.geeksforgeeks.org/dsa/number-rectangles-nm-grid/

⇱ Number of rectangles in N*M grid - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Number of rectangles in N*M grid

Last Updated : 30 Nov, 2023

We are given a N*M grid, print the number of rectangles in it.
Examples:

Input : N = 2, M = 2
Output : 9
There are 4 rectangles of size 1 x 1.
There are 2 rectangles of size 1 x 2
There are 2 rectangles of size 2 x 1
There is one rectangle of size 2 x 2.
Input : N = 5, M = 4
Output : 150
Input : N = 4, M = 3
Output: 60
Recommended Practice

Brute Force Approach :

  • Iterate over all possible pairs of horizontal lines.
  • Iterate over all possible pairs of vertical lines.
  • count the number of rectangles that can be formed using these lines. 

Below is the code for the above approach :


Output
150

Time Complexity : O(N^2)
Space Complexity : O(1)


We have discussed counting number of squares in a n x m grid,
Let us derive a formula for number of rectangles.
If the grid is 1x1, there is 1 rectangle. 
If the grid is 2x1, there will be 2 + 1 = 3 rectangles 
If it grid is 3x1, there will be 3 + 2 + 1 = 6 rectangles. 
we can say that for N*1 there will be N + (N-1) + (n-2) ... + 1 = (N)(N+1)/2 rectangles
If we add one more column to N×1, firstly we will have as many rectangles in the 2nd column as the first, 
and then we have that same number of 2×M rectangles. 
So N×2 = 3 (N)(N+1)/2
After deducing this we can say 
For N*M we'll have (M)(M+1)/2 (N)(N+1)/2 = M(M+1)(N)(N+1)/4
So the formula for total rectangles will be M(M+1)(N)(N+1)/4 

.

Combinatorial Logic:

N*M grid can be represented as (N+1) vertical lines and (M+1) horizontal lines.
In a rectangle, we need two distinct horizontal and two distinct verticals.
So going by the logic of Combinatorial Mathematics we can choose 2 vertical lines and 2 horizontal lines to form a rectangle. And total number of these combinations is the number of rectangles possible in the grid.

Total Number of Rectangles in N*M grid: N+1C2 * M+1C2 = (N*(N+1)/2!)*(M*(M+1)/2!) = N*(N+1)*M*(M+1)/4


Output
150

Time complexity: O(1)
Auxiliary Space: O(1), since no extra space has been taken.

This article is contributed by Pranav.

Comment