自行理解!! 往后还会更新
方法1
#include<bits/stdc++.h>
using namespace std;
int arr[200005];
void solve()
{
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
scanf("%d",&arr[i]);
int ans = arr[1],minn = min(0,arr[1]),sum = arr[1];
for(int i = 2; i<= n; i++)
{
sum += arr[i];
ans = max(ans,sum - minn);
minn = min(minn,sum);
}
cout << ans <<endl;
}
int main (void)
{
int T = 1;
// scanf("%d",&T);
while(T--)
solve();
return 0;
}
方法2
#include<bits/stdc++.h>
using namespace std;
int arr[200005];
void solve()
{
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
scanf("%d",&arr[i]);
int ans = 0,sum = 0,ans_max = -1e9+1;
for(int i = 1; i<= n; i++)
{
sum = arr[i];
ans += sum;
if(sum > ans) ans = sum;
if(ans_max < ans) ans_max = ans ;
}
cout << ans_max <<endl;
}
int main (void)
{
int T = 1;
// scanf("%d",&T);
while(T--)
solve();
return 0;
}