Chúng ta chỉ có thể bắt đầu từ phần tử đầu tiên và liên tục gọi tất cả các phần tử có thể truy cập được từ phần tử đầu tiên. Số bước nhảy tối thiểu để đến cuối từ đầu tiên có thể được tính bằng cách sử dụng số lần nhảy tối thiểu cần thiết để đến cuối từ các phần tử có thể truy cập từ đầu tiên.
Mảng =={1, 3, 6, 3, 2, 3, 6, 8, 9, 5};
Số bước bắt buộc là 4
Ví dụ
using System; namespace ConsoleApplication{ public class Arrays{ public int MinJumps(int[] arr, int l, int h){ if (h == l) return 0; if (arr[l] == 0) return int.MaxValue; int min = int.MaxValue; for (int i = l + 1; i <= h && i <= l + arr[l]; i++){ int jumps = MinJumps(arr, i, h); if (jumps != int.MaxValue && jumps + 1 < min) min = jumps + 1; } return min; } } class Program{ static void Main(string[] args){ Arrays a = new Arrays(); int[] arrm = { 1, 3, 6, 3, 2, 3, 6, 8, 9, 5 }; int n = arrm.Length; Console.Write(" Minimum number of jumps to reach end is " + a.MinJumps(arrm, 0, n - 1)); } } }
Đầu ra
4