Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 11172 | Accepted: 5623 |
Description
In how many ways can you tile a 3xn rectangle with 2x1 dominoes?
Here is a sample tiling of a 3x12 rectangle.
Here is a sample tiling of a 3x12 rectangle.
Input
Input consists of several test cases followed by a line containing -1. Each test case is a line containing an integer 0 <= n <= 30.
Output
For each test case, output one integer number giving the number of possible tilings.
Sample Input
2 8 12 -1
Sample Output
3 153 2131
Source
问题链接:POJ2663 HDU1143 UVA10918 Tri Tiling
问题简述:(略)
问题分析:这是一个递推组合的问题,关键是找出递推函数来。不解释!程序说明:打表是必要的!
题记:(略)
参考链接:(略)
/* POJ2663 HDU1143 UVA10918 Tri Tiling */
#include <iostream>
#include <stdio.h>
using namespace std;
typedef unsigned long long ULL;
const int N = 30;
ULL tiling[N + 1];
void maketable()
{
ULL all;
tiling[0] = 1;
tiling[1] = 3;
all = 0;
for(int i=2; i<=N; i++) {
tiling[i] = 3 * tiling[i - 1] + 2 * (all + 1);
all += tiling[i - 1];
}
}
int main()
{
maketable();
int n;
while(~scanf("%d", &n) && n != -1) {
if(n % 2)
printf("0\n");
else
printf("%lld\n", tiling[n / 2]);
}
return 0;
}