资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
有一条长度为n的过道,很窄,只有一个地板砖宽。地板砖有两个规格,一种长度为1,一种长度为2。数量无限多。现在想知道一共有多少种地板铺法。比如当n=3时,共有三种铺法:1 1 1;1 2;2 1;
输入格式
一个整数n,表示过道的长度n
输出格式
一个整数,表示铺地板的方案数
样例输入
3
样例输出
3
数据规模和约定
n小于32
这是一道很简单的问题,主要是关于递归的使用
用way()来实现所有可能结果的计算,n每次只能减1或减2,当n减到0,说明确定一种可行的铺设方案,函数会通过递归将所有可实施的方案相加。
int way(int n)
{
if (n == 0)
return 1;
else if (n > 0)
return way(n - 1) + way(n - 2);
else
return 0;
}
完整代码如下
#include<iostream>
using namespace std;
int way(int n)
{
if (n == 0)
return 1;
else if (n > 0)
return way(n - 1) + way(n - 2);
else
return 0;
}
int main()
{
int n;
cin >> n;
cout << way(n);
return 0;
}