Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีหาจำนวนการกระโดดน้อยที่สุดเพื่อไปถึงปลายอาร์เรย์ด้วย C#


เราสามารถเริ่มจากองค์ประกอบแรกและเรียกซ้ำสำหรับทุกองค์ประกอบที่เข้าถึงได้จากองค์ประกอบแรก จำนวนการกระโดดน้อยที่สุดเพื่อไปถึงปลายจากองค์ประกอบแรกสามารถคำนวณได้จากจำนวนการกระโดดน้อยที่สุดที่ต้องการเพื่อไปถึงปลายจากองค์ประกอบที่เข้าถึงได้จากองค์ประกอบแรก

Array == {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