790. 多米诺和托米诺平铺
Posted lasclocker
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了790. 多米诺和托米诺平铺相关的知识,希望对你有一定的参考价值。
public int numTilings(int N) // dp转移方程: dp(n) = 2 * dp(n-1) + dp(n-3), 时间复杂度O(N), 空间复杂度O(1)
if (N == 0)
return 0;
if (N == 1)
return 1;
if (N == 2)
return 2;
int mod = (int)(Math.pow(10, 9) + 7);
int n1 = 1, n2 = 2, n3 = 5;
for (int i = 4; i <= N; i++)
int temp = (2 * n3 % mod + n1) % mod; // 2*n3+n1 会超过int的最大值(2147483647, 2开头10位数), 所以要对 2*n3 进行mod(1000000007, 1开头10位数)
n1 = n2;
n2 = n3;
n3 = temp;
return n3;
以上是关于790. 多米诺和托米诺平铺的主要内容,如果未能解决你的问题,请参考以下文章
数据结构与算法之深入解析“多米诺和托米诺平铺”的求解思路与算法示例