#include using namespace std; const int MAX = 31; int main(void) { __int64 f[MAX]; f[1] = 1; f[2] = 3; for(int i = 3; i < MAX; i++) f[i] = f[i-1] + f[i-2] * 2; int cas, n; scanf("%d", &cas); while(cas--) { scanf("%d", &n); printf("%I64d\n", f[n]); } return 0; }
题目大意: 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。 解题思路: 找出递推公式: f[i] = f[i-1] + f[i-2] * 2; 代码:
转载于:https://www.cnblogs.com/cchun/archive/2012/02/15/2520234.html