problema
Suponga que está subiendo escaleras. Se necesitan n pasos para llegar a la parte superior del edificio.
Puedes subir 1 o 2 escalones cada vez. ¿De cuántas formas diferentes tienes para subir a la cima de un edificio?
Ejemplo 1:
Entrada: 2
Salida: 2
Explicación: Hay dos formas de subir a la parte superior del edificio. (1er orden + 1er orden), (2do orden)
Ejemplo 2:
Entrada: 3
Salida: 3
Explicación: Hay tres formas de subir a la parte superior del edificio. (1er orden + 1er orden + 1er orden), (1er orden + 2do orden), (2do orden + 1er orden)
Ideas
Usa la secuencia de Fibonacci para resolver.
(1) Primero, debemos enumerar dos escaleras excepcionales, n = 1 y n = 2.
(2) Cuando n ≥3, el método para subir escaleras para la escalera n consta de dos partes. La primera parte está en n- Sube un escalón en la escalera del 1 y sube dos escalones en la escalera del n-2 en la segunda parte. Entonces dp [n] = dp [n-1] + dp [n-2].
Código
class classname(object):
def __init__(self):
pass
def climbStairs(self, n):
if n == 1:
return 1
if n == 2:
return 2
first = 1; second = 2
for i in range(n-2):
temp = second
second = first + second
first = temp
return second
if __name__ == '__main__':
s = classname()
r = s.climbStairs(35)
print(r)
información relacionada
Enlace de aprendizaje: https://wenku.baidu.com/view/d680efcacd22bcd126fff705cc17552707225efe.htmls