Функция, которая возвращает количество возможностей в массиве целых чисел - PullRequest
0 голосов
/ 26 сентября 2019

Функция принимает массив целых чисел, его длины и два целых числа N1 и N2; она должна возвращать целое число, описывающее, сколько способов вы можете суммировать N1 элементов массива, чтобы получить суммирование, равное N2.Как реализовать эту функцию?

1 Ответ

0 голосов
/ 26 сентября 2019

Используйте рекурсию.Например, что-то вроде:

int findCount(int *array, int length, int N1, int N2) {
   int count = 0;

   if(N1 == 1) {
       for(int i = 0; i < length; i++) {
           if(array[i] == N2) {
               count++;
           }
       }
   } else {
       for(int i = 0; i < length; i++) {
           count += findCount(&array[i+1], length-i-1, N1 - 1, N2 - array[i]);
       }
   }
   return count;
}

Примечание: если массив не может содержать нули или отрицательные числа, вы можете улучшить это с помощью if(array[i] < N2) count += findCount(&array[i+1], length-i-1, N1 - 1, N2 - array[i]);.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...