4 solutions
-
3
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N],f[N]; //f[i]表示以a[i]结尾的子数组的和 int main() { int maxv=-1010; int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; int s=f[i-1]; if(s<0) //说明不需要添加 { s=0; } f[i]=s+a[i];//更新以a[i]结尾的子数组和 maxv=max(maxv,f[i]); } cout<<maxv; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N],f[N]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { if(f[i-1]>0) { f[i]=f[i-1]+a[i]; } else { f[i]=a[i]; } } int res=-2147483648; for(int i=1;i<=n;i++) { res=max(res,f[i]); } cout<<res; return 0; }
- 1
Information
- ID
- 2140
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 36
- Accepted
- 18
- Uploaded By