给定一个“2 x n”的板和大小为“2 x 1”的瓷砖,计算使用 2 x 1 瓷砖来平铺给定板的方法的数量。瓷砖可以水平放置,即作为 1 x 2 瓷砖或垂直放置,即作为 2 x 1 瓷砖。
例子:
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.
执行 –
设“count(n)”是在“2 x n”网格上放置瓷砖的方法计数,我们有以下两种放置第一个瓷砖的方法。
1)如果我们垂直放置第一个图块,问题就简化为“count(n-1)”
2)如果我们水平放置第一个瓷砖,我们必须也水平放置第二个瓷砖。所以问题简化为“count(n-2)”
因此,count(n) 可以写成如下。
count(n) = n if n = 1 or n = 2
count(n) = count(n-1) + count(n-2)
这是上述方法的代码:
C++
// C++ program to count the
// no. of ways to place 2*1 size
// tiles in 2*n size board.
#include
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;
}
输出:
3
2
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。