多米诺和托米诺平铺

Leetcode-790-多米诺和托米诺平铺open in new window

分析

错位相减法优化状态转移方程。

状态转移方程:

并整理得:

实现

class Solution {
    typedef long long LL;
    const int M = 1e9 + 7;
    int f[1010];
public:
    int numTilings(int n) {
        if (f[n] != 0) return f[n];
        if (n == 0 || n == 1) return 1;

        int res = 0;
        if (n >= 1) res = (res + (LL)2 * numTilings(n - 1)) % M;
        if (n >= 3) res = (res + numTilings(n - 3)) % M;
        return f[n] = res;
    }
};
最后修改于: