huella rectangular de seguridad probar Oferta-10

conexión de temas

Título Descripción
Podemos usar dos pequeño rectángulo 1 de los lados o verticalmente para cubrir un rectángulo más grande. ¿El uso de n2 pequeña cobertura rectángulo 1 sin solapamiento un gran rectángulo 2 * n, un total de cuántas maneras?

Título idea
fórmulas de recursión: f (n) = f ( n-1) + f (n-2) (n> 2) f (0) = 0, f (1) = 1, f (2) = 2

código Python

  • Recursivo, correr demasiado largo
class Solution:
    def rectCover(self, number):
        assert number >= 0, "error input!"
        if number <= 2:
            return number
        else:
            return self.rectCover(number - 1) + self.rectCover(number - 2)

  • cálculo Loop usando propagación hacia adelante
class Solution:
    def rectCover(self, number):
        assert number >= 0, "error input!"
        if number <= 2:
            return number
        else:
            a = 1
            b = 2
            result = 0
            for i in range(3, number + 1):
                result = a + b
                a = b
                b = result
            return result

  • El uso de tampones de matriz, calculado reducir la duplicación, el aumento de memoria, se mejora la velocidad de ejecución
class Solution:
    def __init__(self):
        self.result = []
        self.result.append(0)
        self.result.append(1)
        self.result.append(2)

    def rectCover(self, number):
        assert number >= 0, "error input!"
        if number >= len(self.result):
            for i in range(len(self.result), number + 1):
                self.result.append(self.result[i - 1] + self.result[i - 2])
        return self.result[number]

Supongo que te gusta

Origin www.cnblogs.com/nrocky/p/12624118.html
Recomendado
Clasificación