最大子段和问题指的是,给定一个长度为 n 的序列 𝑎a,从中选出连续的一段元素进行求和,不能够不选,求所得和的最大值。下面这段代码求解最大子段和问题所用的方法是()。
using namespace std;
int a[200005], f[200005], n;
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
int ans = f[0] = a[0];
for (int i = 1; i < n; i++)
{
f[i] = max(f[i - 1] + a[i], a[i]);
ans = max(f[i], ans);
}
printf("%d", ans);
return 0;
}