题目大意:输入一个整数t表示测试用例的个数。接着输入一个整数n表示长方形的宽。求要想铺满这个长方形,有多少种铺法???(与2046的不同之处就在于这是有两种砖头可以使用)
解题思路:
1)
假设前N-1种 已经排好, 那么只有一种摆放方式, 如果前 N-2 种已经摆放好, 那么有3种
摆放方式, 其中的|| 方式跟 前面重复 舍弃, 因此 剩 2 种
所以 : F(N) = F(N-1) + 2 * F ( N-2 )
代码如下:
/*
* 2501_1.cpp
*
* Created on: 2013年8月13日
* Author: Administrator
*/
#include <stdio.h>
#include <string.h>
int main(){
int fib[31];
memset(fib,0,sizeof(fib));
fib[1] = 1;
fib[2] = 3;
int i ;
for(i = 3 ; i <= 30 ; ++i){
fib[i] = fib[i-1] + 2* fib[i-2];
}
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
printf("%d\n",fib[n]);
}
}