计算数组的最大连续子数组和其中元素不允许跨越两端
发布时间
阅读量:
阅读量
相关描述:
其本质就是计算该序列中的最长连续子数组的最大元素之和。
比如例如给定序列:
{ -5,-2, 11, -4, 13, -5, -8 }
其最大连续子序列为{ 11, -4, 13 },最大和为20。
方法一:暴力 O(n^3)
算法描述:
采用暴力方法进行枚举所有可能的子序列区间端点i,j,并依次计算从i到j这段区间的元素总和,并不断更新当前的最大值。然而这种方法的时间复杂度较高。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=100000;
int a[maxn];
int main()
{
int n,max;
while(scanf("%d",&n)&&n!=0)
{
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
max=-1111111;
全部评论 (0)
还没有任何评论哟~
