2 条题解

  • 1
    @ 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;
    }
    
    • 1
      @ 2023-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
      标签
      递交数
      255
      已通过
      73
      上传者