2 条题解

  • 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;
    }
    

    信息

    ID
    1763
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    255
    已通过
    73
    上传者