2 条题解
-
1公羽_Cloud (翁浩云) LV 8 @ 2023-4-2 15:29:35
#include<bits/stdc++.h> using namespace std; int n; int maxv=-114514; int A[110000]; int dp[110000]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>A[i]; } for(int i=1;i<=n;i++){ dp[i]=max(dp[i-1]+A[i],A[i]); maxv=max(maxv,dp[i]); } cout<<maxv; }
-
12023-3-9 18:05:47@
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
- 标签
- 递交数
- 236
- 已通过
- 65
- 上传者