Из данного массива (назовите его numbers [] ), я хочу другой массив ( results [] ), который содержит все возможности суммирования между элементами первого массива.
Например, если у меня есть числа [] = {1,3,5}, результаты [] будут {1,3,5,4,8,6,9,0}.Есть 2 ^ N возможностей.Не имеет значения, появляется ли число два раза, потому что результаты [] будут set
Я сделал это для суммы пар или триплета, и это очень просто.Но я не понимаю, как это работает, когда мы суммируем 0, 1, 2 или n чисел.
Это то, что я сделал для пар:
std::unordered_set<int> pairPossibilities(std::vector<int> &numbers) {
std::unordered_set<int> results;
for(int i=0;i<numbers.size()-1;i++) {
for(int j=i+1;j<numbers.size();j++) {
results.insert(numbers.at(i)+numbers.at(j));
}
}
return results;
}
Кроме того, предполагая, что числа[] отсортировано, есть ли возможность сортировать результаты [], пока мы его заполняем?
Спасибо!