一个返回整数数组中可能性数量的函数

时间:2019-09-25 23:11:32

标签: c

该函数接受一个整数数组,它是长度,以及两个整数N1和N2 它应该返回一个整数,该整数描述您可以对数组的N1个元素求和以获得等于N2的总和的方式。 如何实现此功能?

1 个答案:

答案 0 :(得分:0)

使用递归。例如。大概是这样的:

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]);来改进。