leetcode-184周赛-5383-给N*3的网格图涂色的方案数
题目描述:
方法一:
class Solution: def numOfWays(self, n: int) -> int: mod = int(1e9+7) s = ['ryr','ryg','rgr','rgy','yrg','ygr','ygy','yry','gry','grg','gyr','gyg'] ans = {a:1 for a in s} for i in range(n-1): newans = {a:0 for a in s} for i in s: for j in s: if all(a != b for a,b in zip(i,j)): newans[i] += ans[j] newans[i] %= mod ans = newans return sum(ans.values())%mod
方法二:
class Solution: def numOfWays(self, n: int) -> int: same, diff = 6, 6 # 代表初始时第一行两类各6种 for k in range(1,n): same, diff = same * 3 + diff * 2, same * 2 + diff * 2 return (same + diff) % (10 ** 9 + 7)