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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program for the above approach
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


 
 

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.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.