/*****************************************
Author :Crazy_AC(JamesQi)
Time :2015
File Name :
思路:显然i是有(i- 1)和(i- 2)这种情况来的;
先考虑从(i- 1)这种情况来看,必然是dp[i] = dp[i - 1];只能在第i个竖列放一个2 * 1的木板;
再考虑从第(i- 2)这种情况来看,此时留下了一个2*2的格子,那么我们就有3种放法,但是呢,2 * 1,2 * 2,1 * 2,后面这种1 * 2的与上面的情况有重合,就是说多算了,那么多算了多少呢,也就是第(i- 1)的位置放的是1 * 2的木板的时候(有dp[i - 2]种),所以最后就是dp[i] = dp[i - 2] * 2 + dp[i - 1];
*****************************************/
// #pragma comment(linker, "/STACK:1024000000,1024000000")
#include <iostream>
#include <algorithm>
#include <iomani