题目大意:输入一个整数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]);
	}
}