Квадратное Максимальная сумма алгоритм смежный подпоследовательностиМожет ли кто-нибудь объяснить этот алгоритм на C++?
int maxSubSum2(const vector<int> & a)
{
int maxSum = 0;
for (int i = 0; i< a.size(); ++i)
{
int thisSum = 0;
for (int j = i; j < a.size(); ++j)
{
thisSum += a[j];
if (thisSum > maxSum)
maxSum = thisSum;
}
}
return maxSum;
}
мне было интересно, если кто-нибудь может объяснить, как работает алгоритм? Я хорош для циклов, я просто плох на вложенных. Всегда ли «thisSum» всегда 0 каждый раз, когда выполняется цикл внешнего цикла в строке 8 или он статичен?
спасибо! Я очень стараюсь понять алгоритм. Пожалуйста, помогите мне! Я очень ценю время и силы.
Просто, чтобы вы знаете, это очень медленный алгоритм. Есть более быстрые алгоритмы. –
'thisSum' не является статичным (иначе он будет * фактически объявлен static *). На каждом прогоне внешнего цикла он возвращается к 0. – tux3