@robocop45

Зачем переназначать переменные в задаче 70. Climbing Stairs?

всем привет, решаю задачу на leetcode, но не понимаю зачем переназначать переменные.

You are climbing a staircase. It takes n steps to reach the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?



solution

def climbStairs(n):
        if n <=2: return n 
        else:
            prev1 = 1
            prev2 = 2 
            current = 0 

            for i in range(2, n):
                current = prev1 + prev2
                print('Current is ', current)
                prev1 = prev2
                print('prev1 is ', prev1)
                prev2 = current
                print('prev2 is ', prev2)
                
            return current
            
print(climbStairs(5))


вот этот блок кода я не понимаю
current = prev1 + prev2
prev1 = prev2
prev2 = current


как вы видите по print, я пытался разобраться, но не понимаю. По теории все понятно.

вот сама теория
644b76be24a98293715278.jpeg
  • Вопрос задан
  • 346 просмотров
Решения вопроса 1
Alex_Geer
@Alex_Geer
System Engineer
В этой части кода происходит обновление значений переменных prev1 и prev2, чтобы они соответствовали текущей итерации цикла.

Переменная current вычисляется путем сложения значений prev1 и prev2. Затем, чтобы подготовиться к следующей итерации цикла, значение prev1 обновляется, чтобы оно равнялось предыдущему значению prev2, а значение prev2 обновляется, чтобы оно равнялось текущему значению current.

Это делается потому, что для вычисления количества способов подняться по лестнице из n ступенек нам нужно знать только количество способов для n-1 ступеньки и n-2 ступеньки. Поэтому мы можем обновлять значения prev1 и prev2 на каждой итерации цикла, чтобы сохранить только два последних значения и использовать их для вычисления следующего значения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы