如何使用 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

更新日期: 2021 年 8 月 27 日

314 次浏览

开启您的职业生涯

完成课程获得认证

入门
广告