1411 给N*3网格涂色的方案数
你有一个 n x 3 的网格图 grid ,你需要用 红,黄,绿 三种颜色之一给每一个格子上色,且确保相邻格子颜色不同(也就是有相同水平边或者垂直边的格子颜色不同)。
给你网格图的行数 n 。
请你返回给 grid 涂色的方案数。由于答案可能会非常大,请你返回答案对 10^9 + 7 取余的结果。
示例 1:
输入:n = 1
输出:12
解释:总共有 12 种可行的方法:
示例 2:
输入:n = 2
输出:54
示例 3:
输入:n = 3
输出:246
示例 4:
输入:n = 7
输出:106494
示例 5:
输入:n = 5000
输出:30228214
解法一:
暴力遍历
class Solution:
def numOfWays(self, n: int) -> int:
res = [[None for _ in range(4)] for _ in range(n+1)]
def test(i,j,res,num):
if i == n+1:
num += 1
return num
for k in range(3):
if (k==res[i-1][j]) or (k==res[i][j-1]):
continue
res[i][j] = k
# print(res)
if j<3:
num = test(i,j+1,res,num)
else:
num = test(i+1,1,res,num)
return num
return test(1,1,res,0)