problème
Supposons que vous montiez des escaliers. Il faut n pas pour atteindre le sommet du bâtiment.
Vous pouvez monter 1 ou 2 marches à chaque fois. De combien de manières différentes avez-vous pour grimper au sommet d'un bâtiment?
Exemple 1:
Entrée: 2
Sortie: 2
Explication: Il existe deux façons de monter au sommet du bâtiment. (1er ordre + 1er ordre), (2e ordre)
Exemple 2:
Entrée: 3
Sortie: 3
Explication: Il existe trois façons de monter au sommet du bâtiment. (1er ordre + 1er ordre + 1er ordre), (1er ordre + 2e ordre), (2e ordre + 1er ordre)
Idées
Utilisez la séquence de Fibonacci pour résoudre.
(1) Tout d'abord, nous devons lister deux escaliers exceptionnels, n = 1 et n = 2.
(2) Lorsque n≥3, la méthode de montée des escaliers pour la nième échelle se compose de deux parties. La première partie est en n- Montez une marche sur l'échelle de 1 et montez deux marches sur l'échelle de n-2 dans la deuxième partie. Donc dp [n] = dp [n-1] + dp [n-2].
Code
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)
informations connexes
Lien d'apprentissage: https://wenku.baidu.com/view/d680efcacd22bcd126fff705cc17552707225efe.htmls