2 条题解
-
1
f[i]表示以f[i]结尾的最大连续子序列的最大和。
a[i]要么自己单独一个,要么和前面的连起来。
则f[i]=max(a[i],f[i-1]+a[i]);
#include<iostream> using namespace std; int main(){ int n; cin>>n; int a[n+10]={0},f[n+10]={0}; for(int i = 1; i <= n; i ++ ){ cin>>a[i]; } for(int i = 1; i <= n; i ++ ){ f[i]=max(a[i],f[i-1]+a[i]); } int ans = -1; for(int i = 1; i <= n; i ++ ){ ans = max(ans,f[i]); } cout<<ans; }#include<iostream> using namespace std; int main(){ int n; cin>>n; int a[n+10]={0},f[n+10]={0}; for(int i = 1; i <= n; i ++ ){ cin>>a[i]; } for(int i = 1; i <= n; i ++ ){ f[i]=max(a[i],f[i-1]+a[i]); } int ans = -1; for(int i = 1; i <= n; i ++ ){ ans = max(ans,f[i]); } cout<<ans; }
- 1
信息
- ID
- 1763
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 255
- 已通过
- 73
- 上传者