Используйте рекурсию.Например, что-то вроде:
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]);
.