Viết chương trình hiệu quả để tìm tổng các phân đoạn liên tiếp trong một dãy số một chiều có tổng lớn nhất.
Em code bài này trên dev C++ thì chạy đúng yêu cầu nhưng khi sub lên spoj lại báo sai,các a sửa lại cho code nó tối ưu e với ạ.
#include<bits/stdc++.h>
using namespace std;
int maxSubArraySum(int a[], int n)
{
int max_so_far = a[0];
int curr_max = a[0];
for (int i = 1; i < n; i++)
{
curr_max = max(a[i], curr_max+a[i]);
max_so_far = max(max_so_far, curr_max);
}
return max_so_far;
}
int main()
{
int n,T;
cin >> T;
while(T--)
{
cin >> n;
int a[n+1];
for(int i = 0; i < n; i++)
cin >> a[i];
cout << maxSubArraySum(a,n) << endl;
}
return 0;
}