题目链接:格子涂油漆
题目描述:
X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆。
你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动到较远的格子(因为油漆未干不能踩!)
比如:a d b c e f 就是合格的刷漆顺序。
c e f d a b 是另一种合适的方案。
当已知 N 时,求总的方案数。当N较大时,结果会迅速增大,请把结果对 1000000007 (十亿零七) 取模。
然后就是2或者6走到7,这时就相当于左边已经涂完了,7可以走向4或者8,这时对于右边的终点就没有要求了只要是合理的涂法就行。
从3走到2或6涂左边的,从7走到4或8涂右边,它们的方案可以总结为两种,一种是以顶点为起点,终点在同一列的方案,另一种就是以顶点为起点,终点任意的方案,所以我们用数组a代表第一种方案,数组b代表第二种方案,那么a[i]就是以一个顶点为起点涂完2*i个格子,终点在起点的同一列的方案,b[i]就是以一个顶点为起点涂完2*i个格子,终点任意的方案。那么从第二列开始到第n-1列中间的列为起点的方案就是
先走左边的方案Li=2*a[i-1]*2*b[n-i]
先走右边的方案Ri=2*b[i-1]*2*a[n-i]
方案就是Ci=(Li+Ri)*2
(就比如上图的第3列为起点,左边就剩下i-1列,右边剩下n-i列,从3开始,先走左边的话,3可以走到2和6,所以左边涂完就是2*a[i-1],然后7可以走到4和8所以右边涂完就是2*b[n-i],左右方案相乘就是这种情况的方案。然后从3开始,也可以先走右边,还有就是也可以从7开始,所以这一列为起点的方案就是(Li+Ri)*2),
那么中间所以列的方案就是C2+C3+...+Cn-1
那么怎么处理出a数组和b数组呢?上课去,先弃坑。