# Minimum Number of Jumps Problem

AlgorithmsData StructureDynamic Programming

#### Graph Theory Algorithms

32 Lectures 6.5 hours

#### Learning Algorithms in JavaScript from Scratch

67 Lectures 3.5 hours

#### Complete Outlier Detection Algorithms A-Z: In Data Science

18 Lectures 1.5 hours

In this problem, a list of positive integers is given. Each integer is denoting that how many maximum steps that can be made from the current element. Starting from the first element, we have to find the minimum number of jumps to reach the end item of the list.

For the dynamic programming approach, a jumps array is defined to store the minimum number of jumps required. Like for a value of jumps[i], it indicates that how many minimum jumps are needed to reach the ith index of the array from the 0th index.

## Input and Output

Input:
A list of integers. {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9}
Output:
The minimum number of jumps to reach the end location. It is 3.
Start from value 1, go to 3. then jumps 3 values and reach 8. then jump 8 values and reach the last element.

## Algorithm

minPossibleJump(list, n)

Input: Number array, number of elements in the array.

Output: Minimum number of jumps required to reach at the end.

Begin
define an array named jump of size n
if n = 0 or list[0] = 0, then
return ∞
jump[0] := 0

for i := 1 to n, do
jumps[i] := ∞
for j := 0 to i, do
if i <= j + list[j] and jump[j] ≠ ∞, then
jump[i] := minimum of jump[i] and (jump[j] + 1)
break the loop
done
done

return jump[n-1]
End

## Example

#include<iostream>
using namespace std;

int min(int x, int y) {
return (x < y)? x: y;
}

int minPossibleJump(int list[], int n) {
int *jumps = new int[n];     // dynamically create jumps array to store steps
if (n == 0 || list[0] == 0)
return INT_MAX;
jumps[0] = 0;

for (int i = 1; i < n; i++) {
jumps[i] = INT_MAX;    //initially set jumps as infinity
for (int j = 0; j < i; j++) {
if (i <= j + list[j] && jumps[j] != INT_MAX) {
jumps[i] = min(jumps[i], jumps[j] + 1);
break;
}
}
}
return jumps[n-1];
}

int main() {
int list[] = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9};
int size = 11;
cout << "Minimum number of jumps to reach end is: "<< minPossibleJump(list,size);
return 0;
}

## Output

Minimum number of jumps to reach end is: 3
Updated on 17-Jun-2020 07:43:14