NYOJ 515 完全覆盖 II (状态压缩dp)

完全覆盖 II

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 4
描述
有一天acmj在玩一种游戏----用2*1或1*2的骨牌把m*n的棋盘完全覆盖。但他感觉把 棋盘完全覆盖有点简单,他想能不能把完全覆盖的种数求出来?由于游戏难度增加他自己已经没法解决了,于是他希望大家能用程序来帮他把问题解决了。
输入
有多组数据。
每组数据占一行,有两个正整数n(0 当n,m等于0时输入结束
输出
每组数据输出占一行,输出完全覆盖的种数。
样例输入
2 2
2 3
2 4
2 11
4 11
0 0
样例输出
2
3
5
144
51205

状态转移方程:dp[i][ss]=sum(dp[i-1][s])   s状态与ss状态兼容

代码如下:

#include
#include
#include
using namespace std;
long long a[15][15];
long long dp[15][1<<12];
int n,m;
bool judge1(int s){//判断的标准是必须连续两格为1 
	int i;
	for(i=0;i


你可能感兴趣的:(acm)