最长连续子序列码

在这里插入图片描述

求解最长连续子序列暴力算法

思路

题目

	给一串数字,找  连续  的一串数字,他们相加的最大值是几多。
	
	eg.  -2,11,-4,13,-5,-2
	很明显,11, -4,13这一段加起来是最大的为20.

解法

	1.可以发现,已经遍历过的数当和为整数,那么对后面的数还是有贡献的, 当是负数,只会拖后面数的后腿,不如把它直接删掉。
	也就是把已经遍历的数看做一个数,再把他和后面的数一起搭配。
	2.复杂度 遍历一遍,一看就是O(n).

上码

下面展示他的代码

int maxSum(int *a,int n)//a是求的数列,n为数列的个数。
{
	int maxSum_s=0;//最大数列和
	int tempSum=0;//当前的最大
	for(int i=0;i<n;i++)
	{
		tempSum+=a[i];
		if(tempSum<0)//当前为负数了,前面的都没有用了。
		{
			tempSum=0;
		}
		if(tempSum>maxSum)//如果当前数列和大于后面的,那不取代了maxSum。
		{
			maxSum=tempSum;
		}
	}
	return maxSum;
}

后面的用分治算法还有啥啥算法复习到再来补充吧,再见

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值