# Maximum number of tiles required to cover the floor of given size using 2×1 size tiles

Given a floor of size MxN size and tiles of size 2×1, the task is to find the maximum number of tiles required to cover the floor as much as possible of size MxN size.
Note: A tile can either be placed horizontally or vertically and no two tiles should overlap.

Examples:

Input: M = 2, N = 4
Output: 4
Explanation:
4 tiles are needed to cover the floor.

Input: M = 3, N = 3
Output: 4
Explanation:
4 tiles are needed to cover the floor.

Approach:

1. If N is even, then the task is to place m rows of (N/2) number of tiles to cover the whole floor.
2. Else if N is odd, then cover M rows till N – 1 (even) columns in the same way as discussed in the above point and put (M/2) number of tiles in the last column. If both M and N are odd, then one cell of the floor remains uncovered.
3. Therefore, the maximum number of tiles is floor((M * N) / 2).

Below is the implementation of the above approach:

 // C++ program for the above approach #include using namespace std;   // Function to find the maximum number // of tiles required to cover the floor // of size m x n using 2 x 1 size tiles void maximumTiles(int n, int m) {     // Print the answer     cout << (m * n) / 2 << endl; }   // Driver Code int main() {     // Given M and N     int M = 3;     int N = 4;       // Function Call     maximumTiles(N, M);     return 0; }

 // Java program for the above approach import java.util.*;   class GFG{   // Function to find the maximum number // of tiles required to cover the floor // of size m x n using 2 x 1 size tiles static void maximumTiles(int n, int m) {           // Print the answer     System.out.println((m * n) / 2); }   // Driver code public static void main (String[] args) {       // Given M and N     int M = 3;     int N = 4;           // Function call     maximumTiles(N, M); } }   // This code is contributed by offbeat

 # Python3 program for the above approach   # Function to find the maximum number # of tiles required to cover the floor # of size m x n using 2 x 1 size tiles def maximumTiles(n, m):       # Prthe answer     print(int((m * n) / 2));   # Driver code if __name__ == '__main__':       # Given M and N     M = 3;     N = 4;       # Function call     maximumTiles(N, M);   # This code is contributed by sapnasingh4991

 // C# program for the above approach using System;   class GFG{   // Function to find the maximum number // of tiles required to cover the floor // of size m x n using 2 x 1 size tiles static void maximumTiles(int n, int m) {           // Print the answer     Console.WriteLine((m * n) / 2); }   // Driver code public static void Main(String[] args) {       // Given M and N     int M = 3;     int N = 4;           // Function call     maximumTiles(N, M); } }   // This code is contributed by amal kumar choubey

Output:
6

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

Practice Tags :