Рубрики

Программа Python для минимального количества прыжков до конца

Дан массив целых чисел, где каждый элемент представляет максимальное количество шагов, которые можно сделать вперед из этого элемента. Напишите функцию, которая будет возвращать минимальное количество прыжков для достижения конца массива (начиная с первого элемента). Если элемент равен 0, то не может пройти через этот элемент.

Пример:

Input: arr[] = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9}
Output: 3 (1-> 3 -> 8 ->9)

Первый элемент равен 1, поэтому можно перейти только к 3. Второй элемент равен 3, поэтому можно сделать не более 3 шагов, например, до 5, 8 или 9.

# Python3 программа для поиска минимума
# количество прыжков до конца

  
# Возвращает минимальное количество прыжков
# достичь arr [h] из arr [l]

def minJumps(arr, l, h):

  

    # Базовый случай: когда источник и

    # пункт назначения одинаков

    if (h == l):

        return 0

  

    # когда ничего не достижимо

    # из данного источника

    if (arr[l] == 0):

        return float('inf')

  

    # Пройдите через все точки

    # достижимо от обр [l]. Рекурсивный

    # получить минимальное количество прыжков

    # необходимо достичь arr [h] из

    # эти достижимые точки.

    min = float('inf')

    for i in range(l + 1, h + 1):

        if (i < l + arr[l] + 1):

            jumps = minJumps(arr, i, h)

            if (jumps != float('inf') and 

                       jumps + 1 < min):

                min = jumps + 1

  

    return min

  
# Программа драйвера для проверки вышеуказанной функции

arr = [1, 3, 6, 3, 2, 3, 6, 8, 9, 5]

n = len(arr)

print('Minimum number of jumps to reach',

     'end is', minJumps(arr, 0, n-1))

  
# Этот код предоставлен Soumen Ghosh

Выход:

Minimum number of jumps to reach end is 4

Метод 2 (динамическое программирование)
В этом методе мы строим массив jumps [] слева направо так, что jumps [i] указывает минимальное количество переходов, необходимое для достижения arr [i] из arr [0]. Наконец, мы возвращаем прыжки [n-1].

python3

# Python3 программа для поиска минимума
# количество прыжков до конца

  
# Возвращает минимальное количество прыжков
# достичь arr [n-1] из arr [0]

def minJumps(arr, n):

    jumps = [0 for i in range(n)]

  

    if (n == 0) or (arr[0] == 0):

        return float('inf')

  

    jumps[0] = 0

  

    # Найти минимальное количество

    # прыгает, чтобы достичь arr [i] из

    # arr [0] и назначьте это

    # значение для прыжков [i]

    for i in range(1, n):

        jumps[i] = float('inf')

        for j in range(i):

            if (i <= j + arr[j]) and (jumps[j] != float('inf')):

                jumps[i] = min(jumps[i], jumps[j] + 1)

                break

    return jumps[n-1]

  
Программа # Driver для проверки вышеуказанной функции

arr = [1, 3, 6, 1, 0, 9]

size = len(arr)

print('Minimum number of jumps to reach',

      'end is', minJumps(arr, size))

  
# Этот код предоставлен Soumen Ghosh

Выход:

Minimum number of jumps to reach end is 3

Пожалуйста, обратитесь к полной статье на Минимальное количество прыжков, чтобы достичь конца для более подробной информации!

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

Программа Python для минимального количества прыжков до конца

0.00 (0%) 0 votes