In how many ways can you tile a 3×n3×n rectangle with 2×12×1 dominoes? Here is a sample tiling of a 3×123×12 rectangle.
Input:
Input consists of several test cases followed by a line containing −1−1. Each test case is a line containing an integer 0≤n≤300≤n≤30.
Output:
For each test case, output one integer number giving the number of possible tilings.
Example:
input:
0
6
10
-1
output:
1
41
571
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
long long arr[35];
int main() {
arr[0] = 1;
arr[2] = 3;
for (int i = 4; i <= 30; i += 2) {
arr[i] = arr[i - 2] * 4 - arr[i - 4];
}
int n;
while (scanf("%d", &n) && n != -1) {
printf("%I64d\n", arr[n]);
}
return 0;
}