思路:
dp。没有像discuss中的那样优化递推式。
实现:
1 class Solution 2 { 3 public: 4 const int MOD = 1e9 + 7; 5 int numTilings(int N) 6 { 7 vector<vector<int>> dp(N + 1, vector<int>(3, 0)); 8 dp[0][0] = 1; 9 dp[1][0] = dp[1][1] = dp[1][2] = 1; 10 for (int i = 2; i <= N; i++) 11 { 12 dp[i][0] = (((dp[i - 1][0] + dp[i - 2][1]) % MOD + dp[i - 2][2]) % MOD + dp[i - 2][0]) % MOD; 13 dp[i][1] = (dp[i - 1][0] + dp[i - 1][2]) % MOD; 14 dp[i][2] = (dp[i - 1][0] + dp[i - 1][1]) % MOD; 15 } 16 return dp[N][0] % MOD; 17 } 18 };