Как найти правильную функцию для этого рекурсивного вопроса? - PullRequest
0 голосов
/ 30 января 2019

Я изучаю рекурсию.

Я получаю массив целых чисел, и мы пометим его как [].(давайте возьмем в качестве примера массив - a [] = {3,4,5,2,7,6,5}).

Мне нужно написать функцию, которая находит подгруппу этогоцелые числа, что если я их сложу, получу наибольшее число.

Но есть некоторые ограничения:

  1. Я не могу взять одно и то же целое число более 1 раза.

  2. Я не могу взять 2 целых числа в этом массиве, так как разница между ними равна 2 или 3. (Если я взял 5, я не могу взять правый 7).

        #include <stdio.h>
        #include <stdio.h>
        #define MAX_SIZE 1000
        int max_sum(int a[],int n);
        int max(int a, int b);
        int main()
        {
           int i, size_array, array[MAX_SIZE];
           scanf("%d",&size_array);
           for(i=0;i<size_array;i++)
           scanf("%d",&array[i]);
           printf("%d",max_sum(array,size_array));
           return 0;
        }
        int max(int a, int b)
        {
           return a>b ? a : b;
        }
        int max_sum(int a[], int n)
        {
           I AM STUCK HERE!!
        }

Спасибо!

  1. Для массива a [10] = {1,2,5,4,2,7,8, 9,8,1}, наибольшая сумма будет 26.

  2. Для массива a [2] = {1,2}, наибольшая сумма будет 3.

  3. Для массива a [5] = {4,1,7,1,4} наибольшая сумма будет равна 8.

  4. Длямассив a [7] = {3,4,5,2,7,6,5}, наибольшая сумма будет 18.

...