Tiling Problem - GeeksforGeeks



Tiling Problem - GeeksforGeeks

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:

Input n = 3  Output: 3  Explanation:  We need 3 tiles to tile the board of size  2 x 3.   We can tile the board using following ways  1) Place all 3 tiles vertically.   2) Place first tile vertically and remaining 2 tiles horizontally.  3) Place first 2 tiles horizontally and remaining tiles vertically    Input n = 4  Output: 5  Explanation:  For a 2 x 4 board, there are 5 ways  1) All 4 vertical  2) All 4 horizontal  3) First 2 vertical, remaining 2 horizontal  4) First 2 horizontal, remaining 2 vertical  5) Corner 2 vertical, middle 2 horizontal

tilingproblem

We strongly recommend you to minimize your browser and try this yourself first.
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)   

The above recurrence is noting 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.

Different methods for n'th Fibonacci Number.

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


Read full article from Tiling Problem - GeeksforGeeks


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts