как из функции досстать сумму массива
рекурсивный подход, чтобы сгенерировать все возможные комбинации размера n из заданного массива
void generate_combinations(const std::vector<int>& ls, std::vector<int>& combination, int start, int k) {
if (k == 0) {
for (int i = 0; i < combination.size(); i++) {
std::cout << combination[i] << " ";
}
std::cout << std::endl;
return;
}
for (int i = start; i <= ls.size() - k; i++) {
combination.push_back(ls[i]);
generate_combinations(ls, combination, i + 1, k - 1);
combination.pop_back();
}
}
int main() {
std::vector<int> ls = {91, 74, 73, 85, 73, 81, 87};
int k = 3;
std::vector<int> combination;
generate_combinations(ls, combination, 0, k);
return 0;
}
в вектор combination записываются и выводятся все возможные варианты без повторений т.е вывод будет
50 55 56
50 55 57
50 55 58
50 56 57
50 56 58
50 57 58
55 56 57
55 56 58
55 57 58
56 57 58
как сложить все числа этого вектора чтобы получить их сумму
50 55 56 -> 161
50 55 57 -> 162
50 55 58 -> 163
50 56 57 -> 163
50 56 58 -> 164
50 57 58 -> 165
55 56 57 -> 168
55 56 58 -> 169
55 57 58 -> 170
56 57 58 -> 171
Источник: Stack Overflow на русском