Maximum given sized rectangles that can be cut out of a sheet of paper - GeeksforGeeks

30 May, 2021
Given the length L and breadth B of a sheet of paper, the task is to find the maximum number of rectangles with given length l and breadth b that can be cut from this sheet of paper.Examples:  
Input: L = 5, B = 2, l = 14, b = 3 Output: 0 The sheet is smaller than the required rectangle. So, no rectangle of the given dimension can be cut from the sheet.Input: L = 10, B = 7, l = 4, b = 3 Output: 4  
 
Approach:  
Try to cut the rectangles horizontally i.e. length of the rectangle is aligned with the length of the sheet and breadth of the rectangle is aligned with the breadth of the sheet and store the count of rectangles possible in horizontal.
Repeat the same with vertical alignment i.e. when length of the rectangle is aligned with the breadth of the sheet and breadth of the rectangle is aligned with the length of the sheet and store the result in vertical. Print max(horizontal, vertical) as the result.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// CPP implementation of the approach#include<bits/stdc++.h>using namespace std; // Function to return the maximum rectangles possibleint maxRectangles(int L, int B, int l, int b){    int horizontal = 0, vertical = 0;     // Cut rectangles horizontally if possible    if (l <= L && b <= B)    {         // One rectangle is a single cell        int columns = B / b;        int rows = L / l;         // Total rectangles = total cells        horizontal = rows * columns;    }     // Cut rectangles vertically if possible    if (l <= B && b <= L)    {        int columns = L / b;        int rows = B / l;         vertical = rows * columns;    }     // Return the maximum possible rectangles    return max(horizontal, vertical);} // Driver codeint main(){    int L = 10, B = 7, l = 4, b = 3;    cout << (maxRectangles(L, B, l, b)) << endl;} // This code is contributed by// Sanjit_Prasad
// Java implementation of the approachclass GFG {     // Function to return the maximum rectangles possible    static int maxRectangles(int L, int B, int l, int b)    {        int horizontal = 0, vertical = 0;         // Cut rectangles horizontally if possible        if (l <= L && b <= B) {             // One rectangle is a single cell            int columns = B / b;            int rows = L / l;             // Total rectangles = total cells            horizontal = rows * columns;        }         // Cut rectangles vertically if possible        if (l <= B && b <= L) {            int columns = L / b;            int rows = B / l;             vertical = rows * columns;        }         // Return the maximum possible rectangles        return Math.max(horizontal, vertical);    }     // Driver code    public static void main(String[] args)    {        int L = 10, B = 7, l = 4, b = 3;        System.out.print(maxRectangles(L, B, l, b));    }}
# Python3 implementation of the approach # Function to return the maximum# rectangles possibledef maxRectangles(L, B, l, b):     horizontal, vertical = 0, 0     # Cut rectangles horizontally if possible    if l <= L and b <= B:         # One rectangle is a single cell        columns = B // b        rows = L // l         # Total rectangles = total cells        horizontal = rows * columns     # Cut rectangles vertically if possible    if l <= B and b <= L:             columns = L // b        rows = B // l         vertical = rows * columns     # Return the maximum possible rectangles    return max(horizontal, vertical) # Driver codeif __name__ == "__main__":     L, B, l, b = 10, 7, 4, 3    print(maxRectangles(L, B, l, b)) # This code is contributed by Rituraj Jain
// C# implementation of the above approachusing System; class GFG{     // Function to return the    // maximum rectangles possible    static int maxRectangles(int L, int B,                                int l, int b)    {        int horizontal = 0, vertical = 0;         // Cut rectangles horizontally if possible        if (l <= L && b <= B)        {             // One rectangle is a single cell            int columns = B / b;            int rows = L / l;             // Total rectangles = total cells            horizontal = rows * columns;        }         // Cut rectangles vertically if possible        if (l <= B && b <= L)        {            int columns = L / b;            int rows = B / l;            vertical = rows * columns;        }         // Return the maximum possible rectangles        return Math.Max(horizontal, vertical);    }     // Driver code    public static void Main()    {        int L = 10, B = 7, l = 4, b = 3;        Console.WriteLine(maxRectangles(L, B, l, b));    }} // This code is contributed by Ryuga
<?php// PHP implementation of the approach // Function to return the maximum// rectangles possiblefunction maxRectangles($L, $B, $l, $b){    $horizontal = 0;    $vertical = 0;     // Cut rectangles horizontally if possible    if ($l <= $L && $b <= $B)    {         // One rectangle is a single cell        $columns = (int)($B / $b);        $rows = (int)($L / $l);         // Total rectangles = total cells        $horizontal = $rows * $columns;    }     // Cut rectangles vertically if possible    if ($l <= $B && $b <= $L)    {        $columns = (int)($L / $b);        $rows = (int)($B / $l);         $vertical = $rows * $columns;    }     // Return the maximum possible rectangles    return max($horizontal, $vertical);} // Driver code$L = 10;$B = 7;$l = 4;$b = 3;print(maxRectangles($L, $B, $l, $b)); // This code is contributed by mits?>
<script> // Javascript implementation of the approach // Function to return the maximum// rectangles possiblefunction maxRectangles(L, B, l, b){    var horizontal = 0, vertical = 0;     // Cut rectangles horizontally    // if possible    if (l <= L && b <= B)    {                 // One rectangle is a single cell        var columns = parseInt(B / b);        var rows = parseInt(L / l);         // Total rectangles = total cells        horizontal = rows * columns;    }     // Cut rectangles vertically if possible    if (l <= B && b <= L)    {        var columns = parseInt(L / b);        var rows = parseInt(B / l);         vertical = rows * columns;    }     // Return the maximum possible rectangles    return Math.max(horizontal, vertical);} // Driver Codevar L = 10, B = 7, l = 4, b = 3; document.write(maxRectangles(L, B, l, b)); // This code is contributed by kirti </script>
4
 
Time Complexity: O(1)Auxiliary Space: O(1)
ankthon
Sanjit_Prasad
Mithun Kumar
rituraj_jain
Kirti_Mangal
ujjwalgoel1103
maths-cube
square-rectangle
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Convex Hull using Divide and Conquer Algorithm
Maximum number of region in which N non-parallel lines can divide a plane
Equation of circle when three points on the circle are given
Program to find line passing through 2 Points
Orientation of 3 ordered points
Program for Fibonacci numbers
C++ Data Types
Write a program to print all permutations of a given string
Set in C++ Standard Template Library (STL)
Coin Change | DP-7