Упражнения C: Вернуть максимальную сумму, чтобы не было двух соседних элементов.
C Массив: упражнение-68 с раствором
Напишите программу на C, чтобы она возвращала максимальную сумму, чтобы не было двух соседних элементов.
Иллюстрированная презентация:
Пример решения:
Код C:
#include <stdio.h>
int maxSumSubseq(int arr1[], int n)
{
int incl = arr1[0];
int excl = 0;
int excl_new;
int i;
for (i = 1; i < n; i++)
{
excl_new = (incl > excl)? incl: excl;
incl = excl + arr1[i];
excl = excl_new;
}
return ((incl > excl)? incl : excl);
}
int main()
{
int arr1[] = {1, 3, 5, 9, 7, 10, 1, 10, 100};
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 maximum sum from the array such that no two elements are adjacent is: %d \n", maxSumSubseq(arr1, n));
return 0;
}
Пример вывода:
Данный массив: 1 3 5 9 7 10 1 10 100 Максимальная сумма из массива, так что нет двух соседних элементов: 122
Блок - схема:
Редактор кода программирования C:
Улучшите этот пример решения и опубликуйте свой код через Disqus.
Предыдущий: Напишите программу на C для поиска элементов в отсортированной по строке и столбцу матрице.
Далее: Напишите программу на C, чтобы узнать максимальную разницу между любыми двумя элементами, чтобы после меньшего числа появлялся больший элемент.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code