最大子段和(动态规划)

最大子段和(动态规划),第1张

只要相加时m[i-1] 大于0 就继续加, 若m[i-1]<0 就直接m[i]=a[i] 从此处重新开始

#include
using namespace std;
int max(int a,int b){
	return a>b?a:b;
}
int main(){
	int n;
	cin>>n;
	int a[n];
	for(int i=0;i<n;i++)
	  cin>>a[i];
	int m[n];
	m[0]=a[0];
    for(int i=1;i<n;i++){
		if(m[i-1]>0)
		  m[i]=m[i-1]+a[i];
		else m[i]=a[i];
	}
	int maxn=0;
   for(int i=0;i<n;i++)
     maxn=max(m[i],maxn);
   cout<<maxn;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/662350.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-18
下一篇 2022-04-18

发表评论

登录后才能评论

评论列表(0条)

保存