小明的烦恼
时间限制: 1 Sec 内存限制: 32 MB
题目描述
小明最近新买了一个房间,为了给它做装修,想要给它铺上地砖。然而现有的地砖只有两种规格分别为1米*1米、2米*2米,由于小明买的房间有点小,宽度只有3米,长度为N米。当然这样一个房间也足够他自己一个人住了。那么如果要给这个房间铺设地砖,且只用以上这两种规格的地砖,请问有几种铺设方案。
输入
输入的第一行是一个正整数C,表示有C组测试数据。接下来C行,每行输入一个正整数n(1<=n<=30),表示房间的长度。
输出
对于每组输入,请输出铺设地砖的方案数目。
样例输入
2
2
3
样例输出
3
5
题意概括
一共有两种地砖,1*1的和2*2的,知道墙宽是三米,问,当长度为n米的时候,铺盘地砖一共有多少种铺的方法。
解题思路
这个题我是使用的搜索,把所有符合的情况都搜索一遍,然后求和,但是这个题后来才知道是一个变形的斐波那契~~~
代码如下
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<algorithm>
using namespace std;
long long sum;
void dfs(int m,int num)
{
if(m==0){
sum+=(int)pow(2,num);
return ;
}
dfs(m-1,num);
if(m>1){
dfs(m-2,num+1);
}
}
int main ()
{
int n,m,i,j;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
sum=0;
dfs(m,0);
printf("%lld
",sum);
}
return 0;
}