プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

ジャンプの最小数問題


この問題では、正の整数のリストが表示されます。各整数は、現在の要素から実行できる最大ステップ数を示します。最初の要素から始めて、リストの最終項目に到達するためのジャンプの最小数を見つける必要があります。

動的計画法のアプローチでは、必要な最小数のジャンプを格納するためにジャンプ配列が定義されます。 jumps [i]の値と同様に、0番目のインデックスから配列のi番目のインデックスに到達するために必要な最小ジャンプ数を示します。

入力と出力

Input:
A list of integers. {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9}
Output:
The minimum number of jumps to reach the end location. It is 3.
Start from value 1, go to 3. then jumps 3 values and reach 8. then jump 8 values and reach the last element.

アルゴリズム

minPossibleJump(list, n)

入力: 配列の数、配列内の要素の数。

出力: 最後に到達するために必要なジャンプの最小数。

Begin
   define an array named jump of size n
   if n = 0 or list[0] = 0, then
      return ∞
   jump[0] := 0

   for i := 1 to n, do
      jumps[i] := ∞
      for j := 0 to i, do
         if i <= j + list[j] and jump[j] ≠ ∞, then
            jump[i] := minimum of jump[i] and (jump[j] + 1)
            break the loop
      done
   done

   return jump[n-1]
End

#include<iostream>
using namespace std;

int min(int x, int y) {
   return (x < y)? x: y;
}

int minPossibleJump(int list[], int n) {
   int *jumps = new int[n];     // dynamically create jumps array to store steps
   if (n == 0 || list[0] == 0)
       return INT_MAX;
   jumps[0] = 0;

   for (int i = 1; i < n; i++) {
      jumps[i] = INT_MAX;    //initially set jumps as infinity
      for (int j = 0; j < i; j++) {
         if (i <= j + list[j] && jumps[j] != INT_MAX) {
            jumps[i] = min(jumps[i], jumps[j] + 1);
            break;
         }
      }
   }
   return jumps[n-1];
}

int main() {
   int list[] = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9};
   int size = 11;
   cout << "Minimum number of jumps to reach end is: "<< minPossibleJump(list,size);
   return 0;
}

出力

Minimum number of jumps to reach end is: 3

  1. 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, i

  2. Python-int()関数

    Pythonのint()関数は、指定された値を整数に変換します。 int()関数は、xなどの数値または文字列から構築された整数オブジェクトを返します。引数が指定されていない場合は0を返します。 構文 int(value, base) int(x, base=10) 値=整数に変換できる数値または文字列 base=数値形式を表す数値。デフォルト値-10 例 # int() for integers int(10) 10 int(20) 20 # int() for floating point numbers int(11.2) 11 int(9.9e5) 990000