您的位置:首页 > 其它

南邮 OJ 1417 Tiling a Grid With Dominoes

2015-08-05 15:35 218 查看


Tiling a Grid With Dominoes

时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte

总提交 : 15 测试通过 : 12

比赛描述

We wish to tile a grid 4 units high and N units long with rectangles (dominoes) 2 units by one unit (in either orientation). For example, the figure shows the five different ways that a grid 4 units high and 2 units
wide may be tiled.



Write a program that takes as input the width, W, of the grid and outputs the number of different ways to tile a 4-by-W grid.

输入

The first line of input contains a single integer N, (1 ≤ N ≤ 1000) which is the number of datasets that follow.

Each dataset contains a single decimal integer, the width, W, of the grid for this problem instance.

输出

For each problem instance, there is one line of output: The problem instance number as a decimal integer (start counting at one), a single space and the
number of tilings of a 4-by-W grid. The values of W will be chosen so the count will fit in a 32-bit integer.

样例输入

3

2

3

7

样例输出

1 5

2 11

3 781

题目来源

Greater New York Region 2007

#include<iostream>
#define MAX_N 31
int dp[MAX_N][16];
int main(){
int i,n,c;
dp[1][0]=dp[1][3]=dp[1][6]=dp[1][12]=dp[1][15]=1;
for(i=2;i<MAX_N;i++){
dp[i][0]=dp[i-1][15];
dp[i][3]=dp[i-1][15]+dp[i-1][12];
dp[i][6]=dp[i-1][15]+dp[i-1][9];
dp[i][9]=dp[i-1][6];
dp[i][12]=dp[i-1][15]+dp[i-1][3];
dp[i][15]=dp[i-1][15]+dp[i-1][0]+dp[i-1][3]+dp[i-1][6]+dp[i-1][12];
}
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&c);
printf("%d %d\n",i,dp[c][15]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: