Рубрики

Программа Python для подсчета путей, чтобы добраться до n-й ступени

Есть n лестниц, человек, стоящий внизу, хочет достичь вершины. Человек может подняться на 1 или 2 ступеньки одновременно. Подсчитайте количество способов, которыми человек может достичь вершины.

Рассмотрим пример, показанный на диаграмме. Значение n равно 3. Есть 3 способа достичь вершины. Диаграмма взята из пазлов Легче Фибоначчи

питон

# Программа для подсчета количества способов добраться до n ступени

  
# Рекурсивная программа для поиска n-го числа Фибоначчи

def fib(n):

    if n <= 1:

        return n

    return fib(n-1) + fib(n-2)

  
# возвращает нет. способов добраться до лестницы

def countWays(s):

    return fib(s + 1)

  
# Драйверная программа

  

s = 4

print "Number of ways = ",

print countWays(s)

  
# Предоставлено Харшитом Агравалом

Выход:

Number of ways =  5

Временная сложность вышеописанной реализации является экспоненциальной (золотое сечение повышено до степени n). Он может быть оптимизирован для работы за время O (Logn) с использованием ранее обсужденных оптимизаций функции Фибоначчи .

питон

# Программа для подсчета количества способов добраться до n ступени

  
# Рекурсивная функция, используемая countWays

def countWaysUtil(n, m):

    if n <= 1:

        return n

    res = 0

    i = 1

    while i<= m and i<= n:

        res = res + countWaysUtil(n-i, m)

        i = i + 1

    return res

      
# Возвращает количество способов добраться до лестницы

def countWays(s, m):

    return countWaysUtil(s + 1, m)

      

  
# Драйверная программа

s, m = 4, 2

print "Number of ways =", countWays(s, m)

  
# Предоставлено Харшитом Агравалом

Выход:

Number of ways = 5

питон

# Программа для подсчета количества способов добраться до n ступени

  
# Рекурсивная функция, используемая countWays

def countWaysUtil(n, m):

    res = [0 for x in range(n)] # Создает список со всеми элементами 0

    res[0], res[1] = 1, 1

      

    for i in range(2, n):

        j = 1

        while j<= m and j<= i:

            res[i] = res[i] + res[i-j]

            j = j + 1 

    return res[n-1]

  
# Возвращает количество способов добраться до лестницы

def countWays(s, m):

    return countWaysUtil(s + 1, m)

      
# Драйверная программа

s, m = 4, 2

print "Number of ways =", countWays(s, m)

      
# Предоставлено Харшитом Агравалом

Выход:

Number of ways = 5

Пожалуйста, обратитесь к полной статье о способах подсчета, чтобы добраться до n-й ступени, чтобы узнать больше!

Рекомендуемые посты:

Программа Python для подсчета путей, чтобы добраться до n-й ступени

0.00 (0%) 0 votes