Упражнения на C: вернуть минимальное количество прыжков, чтобы достичь конца массива
C Массив: упражнение 56 с решением
Напишите программу на C, чтобы она возвращала минимальное количество переходов до конца массива.
Пример решения:
Код C:
#include <stdio.h>
#include <limits.h>
int noOfJumps (int arr1[], int low, int high)
{
if (high == low)
return 0;
if (arr1[low] == 0)
return INT_MAX;
int min = INT_MAX;
for (int i = low+1; i <= high && i <= low + arr1[low]; i++)
{
int jumps = noOfJumps(arr1, i, high);
if(jumps != INT_MAX && jumps + 1 < min)
min = jumps + 1;
}
return min;
}
int main()
{
int arr1[] = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9,1,1,1};
int n = sizeof(arr1)/sizeof(arr1[0]);
int i;
//------------- print original array ------------------
printf("The given array is : ");
for(i = 0; i < n; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
//------------------------------------------------------
printf("The minimum of number of jumps is required to reach the end is: %d ", noOfJumps(arr1, 0, n-1));
return 0;
}
Пример вывода:
Данный массив: 1 3 5 8 9 2 6 7 6 8 9 1 1 1 Минимальное количество прыжков, необходимое для достижения конца: 3
Блок - схема:
Редактор кода программирования C:
Улучшите этот пример решения и опубликуйте свой код через Disqus.
Previous: написать программу на C, чтобы проверить, является ли массив подмножеством другого массива.
Далее: написать программу на C, чтобы найти минимальный элемент в отсортированном и повернутом массиве.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code