Domino and Tromino Tiling
MediumDynamic Programming
Solution
import { range } from '@algorithm/lib';
export function numTilings(n: number): number {
const MOD = 1e9 + 7;
const dp = [0, 1, 2, 5].concat(new Array<number>(n).fill(0));
for (const i of range(4, n + 1)) {
dp[i] = (dp[i - 1] * 2 + dp[i - 3]) % MOD;
}
return dp[n];
}