南邮 OJ 1417 Tiling a Grid With Dominoes

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]);
	}
}






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值