LeetCode 5383. Número de esquemas para colorear gráficos de cuadrícula N x 3 (matemáticas)

1. Título

Tiene una cuadrícula de cuadrícula nx 3. Debe colorear cada cuadrícula con una de rojo, amarillo y verde, y asegurarse de que las cuadrículas adyacentes tengan un color diferente (es decir, cuadrículas con los mismos lados horizontales o verticales Diferentes colores).

Le da el número de filas en el gráfico de cuadrícula n.

Devuelva el número de esquemas pintados a la cuadrícula. Como la respuesta puede ser muy grande, devuelva el resultado del par de respuestas 10 ^ 9 + 7.

Inserte la descripción de la imagen aquí

示例 1:
输入:n = 1
输出:12
解释:总共有 12 种可行的方法:

示例 2:
输入:n = 2
输出:54

示例 3:
输入:n = 3
输出:246

示例 4:
输入:n = 7
输出:106494

示例 5:
输入:n = 5000
输出:30228214
 
提示:
n == grid.length
grid[i].length == 3
1 <= n <= 5000

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/number-of-ways-to-paint-nx-3-grid Los
derechos de autor pertenecen a la red de deducción. Comuníquese con la autorización oficial para la reimpresión comercial e indique la fuente de la reimpresión no comercial.

2. Resolución de problemas

  • El color se divide en 2 tipos de tipo ABA, tipo ABC
    Inserte la descripción de la imagen aquí
  • 1 ABA puede producir 3 ABA + 2 ABC
  • 1 ABC puede producir 2 ABA + 2 ABC
class Solution {
public:
    int numOfWays(int n) {
    	long aba = 6, abc = 6, aba_t, abc_t, mod = 1e9+7;
    	for(int i = 1; i < n; ++i)
    	{
    		aba_t = (3*aba+2*abc)%mod;
    		abc_t = (2*(aba+abc))%mod;
    		aba = aba_t;
    		abc = abc_t;
    	}
    	return (aba+abc)%mod;
    }
};

4 ms 5,8 MB

Publicado 839 artículos originales · elogiado 2083 · 440,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/qq_21201267/article/details/105478846
Recomendado
Clasificación