题解的公式并不太好推,以下给出另一种表示形式(实际上等价)的递推公式;
首先约定:
- f[i]表示填满了第1列到第i列时的方案数
- g[i]表示填满了第1列到第i-1列,第i列仅有一个格子的方案数;
公式为:
f[i] = f[i - 1] + f[i - 2] + g[i - 1]
g[i] = f[i - 2] * 2 + g[i - 1]
可以认为填满至第i列的方案数f[i]由三部分组成:
- 填满至i-1列,再加上一块2 * 1的方块;
- 填满至i-2列,再加上两块2 * 1的方块;2 * 2虽然有两种摆法,但两块纵向排列的方块和情况1重合,故f[i-2]只累加一次;
- 填满至i-2列,第i-1列只有一块方块,此时可以加上一块L型方块;
g[i]由两部分组成:
- 填满至i-2列,补上一块L形砖块,由于有两种不同摆放形式,f[i-2]统计两次;
- 由g[i-1]加上一块1 * 2的砖块;
建议推算f[3] = 5, g[3] = 4并观察