В настоящее время у меня есть следующий рекурсивный алгоритм для решения проблемы суммирования подмножества. Он проверяет, согласуется ли какая-либо комбинация элементов в заданном векторе с целевым номером. Например, если A= {1,2,3,4,5}
и target = 8
, то он должен вернуть true
как 1+2+5=8
. В настоящее время он работает отлично. Однако я хочу сделать одно изменение. Я назначаю значения одному из параметров функции в моей основной, и я стараюсь этого не делать. Все, что я хочу сделать, это вызвать функцию в моем главном. Не знаю, как я попытаюсь это сделать. Любая помощь приветствуется!Изменение рекурсивного алгоритма подмножества сумм
bool subsetsum_imp(vector<int> & vec, int n, int sum) {
if (sum == 0) {
return true;
}
if (n == 0 && sum != 0) {
return false;
}
if (vec[n-1] > sum)
return subsetsum_imp(vec, n-1, sum);
return subsetsum_imp(vec, n-1, sum) || subsetsum_imp(vec, n-1, sum-vec[n-1]);
}
Значение п назначается в мой основной следующим образом или иначе алгоритм не работает, как я могу включить это в моей функции как-то так я не должен писать в мой главный?
int n = sizeof(vec)/sizeof(vec[0]);
Почему бы не использовать vec.size()? – SHR
@SHR Это полностью заставило меня использовать vec.size(), но будет ли это иметь значение? – sparta93