如何使用 C# 找到到达数组末端所需的最小跳跃数?
我们可以直接从第一个元素开始,并反复调用可从第一个元素达到的所有元素。可从第一个元素到达末端的最小跳跃数可使用从可从第一个元素到达的元素到达末端的最小跳跃数计算。
数组 == {1、3、6、3、2、3、6、8、9、5};
所需的步骤数为 4
示例
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)); } } }
输出
4
广告