跳到主要内容

790.多米诺和托米诺平铺

链接:790.多米诺和托米诺平铺
难度:Medium
标签:动态规划
简介:给定整数 n ,返回可以平铺 2 x n 的面板的方法的数量。

题解 1 - cpp

  • 编辑时间:2022-11-12
  • 内存消耗:5.7MB
  • 编程语言:cpp
  • 解法介绍:dp。
class Solution {
public:
const int mod = 1e9 + 7;
// j = 0 平整
// j = 1 上空
// j = 2 下空
int dp[1005][3] = {0};
int numTilings(int n) {
dp[1][0] = 1;
dp[2][0] = 2;
dp[2][1] = 1;
dp[2][2] = 1;
for (int i = 3; i <= n; i++) {
dp[i][0] = (dp[i][0] + dp[i - 1][0]) % mod;
dp[i][0] = (dp[i][0] + dp[i - 2][0]) % mod;
dp[i][0] = (dp[i][0] + dp[i - 1][1]) % mod;
dp[i][0] = (dp[i][0] + dp[i - 1][2]) % mod;
dp[i][1] = (dp[i][1] + dp[i - 2][0] + dp[i - 1][2]) % mod;
dp[i][2] = (dp[i][2] + dp[i - 2][0] + dp[i - 1][1]) % mod;
}
return dp[n][0];
}
};