// C++ program for Minimum number
// of jumps to reach end
#include <bits/stdc++.h>
using namespace std;
int min(int x, int y) { return (x < y) ? x : y; }
// Returns minimum number of jumps
// to reach arr[n-1] from arr[0]
int minJumps(int arr[], int n)
{
// jumps[n-1] will hold the result
int* jumps = new int[n];
int i, j;
if (n == 0 || arr[0] == 0)
return INT_MAX;
jumps[0] = 0;
// Find the minimum number of jumps to reach arr[i]
// from arr[0], and assign this value to jumps[i]
for (i = 1; i < n; i++) {
jumps[i] = INT_MAX;
for (j = 0; j < i; j++) {
if (i <= j + arr[j] && jumps[j] != INT_MAX) {
jumps[i] = min(jumps[i], jumps[j] + 1);
break;
}
}
}
return jumps[n - 1];
}
// Driver code
int main()
{
int arr[] = { 1, 3, 6, 1, 0, 9 };
int size = sizeof(arr) / sizeof(int);
cout << "Minimum number of jumps to reach end is "
<< minJumps(arr, size);
return 0;
}
// This is code is contributed by rathbhupendra
Ly8gQysrIHByb2dyYW0gZm9yIE1pbmltdW0gbnVtYmVyCi8vIG9mIGp1bXBzIHRvIHJlYWNoIGVuZAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKCmludCBtaW4oaW50IHgsIGludCB5KSB7IHJldHVybiAoeCA8IHkpID8geCA6IHk7IH0KIAovLyBSZXR1cm5zIG1pbmltdW0gbnVtYmVyIG9mIGp1bXBzCi8vIHRvIHJlYWNoIGFycltuLTFdIGZyb20gYXJyWzBdCgppbnQgbWluSnVtcHMoaW50IGFycltdLCBpbnQgbikKewoKICAgIC8vIGp1bXBzW24tMV0gd2lsbCBob2xkIHRoZSByZXN1bHQKCiAgICBpbnQqIGp1bXBzID0gbmV3IGludFtuXTsKCiAgICBpbnQgaSwgajsKIAoKICAgIGlmIChuID09IDAgfHwgYXJyWzBdID09IDApCgogICAgICAgIHJldHVybiBJTlRfTUFYOwogCgogICAganVtcHNbMF0gPSAwOwogCgogICAgLy8gRmluZCB0aGUgbWluaW11bSBudW1iZXIgb2YganVtcHMgdG8gcmVhY2ggYXJyW2ldCgogICAgLy8gZnJvbSBhcnJbMF0sIGFuZCBhc3NpZ24gdGhpcyB2YWx1ZSB0byBqdW1wc1tpXQoKICAgIGZvciAoaSA9IDE7IGkgPCBuOyBpKyspIHsKCiAgICAgICAganVtcHNbaV0gPSBJTlRfTUFYOwoKICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7CgogICAgICAgICAgICBpZiAoaSA8PSBqICsgYXJyW2pdICYmIGp1bXBzW2pdICE9IElOVF9NQVgpIHsKCiAgICAgICAgICAgICAgICBqdW1wc1tpXSA9IG1pbihqdW1wc1tpXSwganVtcHNbal0gKyAxKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0KCiAgICByZXR1cm4ganVtcHNbbiAtIDFdOwp9CiAKLy8gRHJpdmVyIGNvZGUKCmludCBtYWluKCkKewoKICAgIGludCBhcnJbXSA9IHsgMSwgMywgNiwgMSwgMCwgOSB9OwoKICAgIGludCBzaXplID0gc2l6ZW9mKGFycikgLyBzaXplb2YoaW50KTsKCiAgICBjb3V0IDw8ICJNaW5pbXVtIG51bWJlciBvZiBqdW1wcyB0byByZWFjaCBlbmQgaXMgIgoKICAgICAgICAgPDwgbWluSnVtcHMoYXJyLCBzaXplKTsKCiAgICByZXR1cm4gMDsKfQogCi8vIFRoaXMgaXMgY29kZSBpcyBjb250cmlidXRlZCBieSByYXRoYmh1cGVuZHJh