# Maximum given sized rectangles that can be cut out of a sheet of paper in C

CServer Side ProgrammingProgramming

#### C in Depth: The Complete C Programming Guide for Beginners

45 Lectures 4.5 hours

#### Practical C++: Learn C++ Basics Step by Step

Most Popular

50 Lectures 4.5 hours

#### Master C and Embedded C Programming- Learn as you go

Best Seller

66 Lectures 5.5 hours

We are given the dimensions of the sheet of paper, it’s Length L, and Breadth B. Also, we are given the dimensions of a small rectangle, it’s length l, and breadth b. The goal is to find the maximum number of smaller rectangles that can be cut out of a sheet of paper.

We will do following steps −

• Firstly, we will take horizontal alignment, lengths L and l of sheet and rectangle respectively. Start aligning the L by l and B by b and count the rectangles.

• Then also do the same in vertical alignments. Count again. Return the maximum value of count.

Let us understand with an example.

Input

Sheet L=18, B=6 Rectangle l=4, b=3

Output

Maximum rectangles: 8

Explanation

Horizontal 18/4=4 6/3=2 2*4=8 rectangles possible
Vertical 18/3=6 6/4=1 6*1=6 rectangles possible
Maximum rectangles here is 8

Input

Sheet L=10, B=6 Rectangle l=4, b=2

Output

Maximum rectangles: 6

Explanation

Horizontal 10/4=2 6/2=3 2*3=6 rectangles possible
Vertical 10/2=5 6/4=1 5*1=5 rectangles possible
Maximum rectangles here is 6

## Approach used in the below program is as follows

• The variables Length and Breadth are used to store dimensions of sheet.

• The variables len and bre are used to store dimensions of rectangle.

• Function maxRectangles (int L, int B, int l, int b) takes dimensions of sheet and rectangle and returns the maximum number of rectangles possible.

• Variables numh and numv are used to store the number of rectangles that can be cut horizontally and vertically.

• For horizontally, divide cols=L/l and rows=B/b, rectangles possible, numh=cols*rows.

• For vertically, divide cols=L/b and rows=B/l, rectangles possible, numv=cols*rows.

• Return maximum value as result obtained in above two steps numh or numv.

## Example

Live Demo

#include <stdio.h>
int maxRectangles (int L, int B, int l, int b){
int numh = 0, numv = 0;
// Cut rectangles horizontally if possible
if (l <= L && b <= B){
// One rectangle is a single cell
int cols = B / b;
int rows = L / l;
// Total rectangles = total cells
numh = rows * cols;
}
// Cut rectangles vertically if possible
if (l <= B && b <= L){
int cols = L / b;
int rows = B / l;
numv = rows * cols;
}
// Return the maximum possible rectangles
return numh>numv?numh:numv;
}
// Driver code
int main (){
int Length = 18;
}
Maximum given sized rectangles that can be cut out of a sheet of paper: 8