[题目大意]
有一个m*n的正方形网格,让你用1*2的骨牌覆盖满这个网格,并且不允许重叠,求方案个数。
[题目分析]
再经典不过的一道状压DP覆盖模型的题目了。这个题很容易想出这样一个方程:
f[i,j]表示前i-1行盖满,第i行使用j这种状态的方案个数。
F[I,J]:=Sum{F[I-1,K]} (K状态能导出J状态)
现在最麻烦的地方变成了,如何确定一个状态I可以由哪几个状态推出来,并且这些状态都是什么。
这个就是DFS了。
一共是几中情况,如果没有空位,就过去,如果有空位,那就放。
放有两种情况:
情况1:如果只有一个空,那就只能竖着放一个。
情况2:如果有两个空,那就可以用横着放一个填满上一行,这样的方案不变 。要么就是直接方一个,继续进行。
[代码]