Skip to content
Related Articles

Related Articles

Improve Article

Tiling Problem

  • Difficulty Level : Easy
  • Last Updated : 19 Dec, 2020

Given a “2 x n” board and tiles of size “2 x 1”, count the number of ways to tile the given board using the 2 x 1 tiles. A tile can either be placed horizontally i.e., as a 1 x 2 tile or vertically i.e., as 2 x 1 tile. 

Examples: 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Input: n = 4

Output: 3

Explanation:

For a 2 x 4 board, there are 3 ways

  • All 4 vertical
  • All 4 horizontal
  • 2 vertical and 2 horizontal

Input: n = 3

Output: 2

Explanation:

We need 2 tiles to tile the board of size  2 x 3.

We can tile the board using following ways

  • Place all 3 tiles vertically.
  • Place 1 tile vertically and remaining 2 tiles horizontally.

 

tilingproblem

 

Implementation – 

Let “count(n)” be the count of ways to place tiles on a “2 x n” grid, we have following two ways to place first tile. 
1) If we place first tile vertically, the problem reduces to “count(n-1)” 
2) If we place first tile horizontally, we have to place second tile also horizontally. So the problem reduces to “count(n-2)” 
Therefore, count(n) can be written as below. 

   count(n) = n if n = 1 or n = 2
   count(n) = count(n-1) + count(n-2)

Here’s the code for the above approach:

C++




// C++ program to count the
// no. of ways to place 2*1 size
// tiles in 2*n size board.
#include <iostream>
using namespace std;
 
int getNoOfWays(int n)
{
    // Base case
    if (n == 0)
        return 0;
    if (n == 1)
        return 1;
 
    return getNoOfWays(n - 1) + getNoOfWays(n - 2);
}
 
// Driver Function
int main()
{
    cout << getNoOfWays(4) << endl;
    cout << getNoOfWays(3);
    return 0;
}

Output:

3
2

The above recurrence is nothing but Fibonacci Number expression. We can find n’th Fibonacci number in O(Log n) time, see below for all method to find n’th Fibonacci Number. 
https://youtu.be/NyICqRtePVs 
https://youtu.be/U9ylW7NsHlI 
Different methods for n’th Fibonacci Number
Count the number of ways to tile the floor of size n x m using 1 x m size tiles 
This article is contributed by Saurabh Jain. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
 

My Personal Notes arrow_drop_up
Recommended Articles
Page :