码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 2501 [Tiling_easy version] 递推

时间:2017-02-05 00:24:52      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:iostream   clu   log   names   include   cout   ble   main   name   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2501

题目大意:有2*N个格子,有2种牌(2*1的和2*2的),问有多少种铺满的方式。

关键思想:画图联想。找到递推式。

N为奇数时,dp[n]=2*dp[N-1]-1.

N为偶数时,dp[n]=4*dp[N-2]-1.

代码如下:

//观察,递推 
#include <iostream>
using namespace std;

int main(){
	int T,N;
	long long a[35]={0,1,3};
	cin>>T; 
	while(T--){
		cin>>N;
		for(int i=3;i<=35;i++){
			if(i%2==1)a[i]=2*a[i-1]-1;
			else a[i]=4*a[i-2]-1;
		}
		cout<<a[N]<<endl;
	}	
	return 0;
} 

  

HDU 2501 [Tiling_easy version] 递推

标签:iostream   clu   log   names   include   cout   ble   main   name   

原文地址:http://www.cnblogs.com/G-M-WuJieMatrix/p/6366680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!