题目:给一个数组,数组元素为n,求其中最大的连续数组元素之和是多少。
法一(O(n^3))
思路:通过三重for循环,第一重从左边i=0开始遍历,i<n;第二重从左边j=i开始遍历,j<n;这样i和j就可以形成一段连续数组;
第三重循环从k=i开始遍历,一直到k<=j,遍历i和j这一段连续数组中最大的数组元素之和;
代码
#include<iostream>
using namespace std;
int main()
{
int function1(int a[]);
int a[10]={4,-3,5,-2,-1,6-8,9,1,-2};
cout<<function1(a);
return 0;
}
int function1(int a[])
{
int maxsum=0,nowsum=0;
for(int i=0;i<10;++i){
for(int j=i;j<10;++j){
nowsum=0;//每一次计算当前连续元素和前要将nowsum置为0
for(int k=i;k<=j;++k){
nowsum+=a[k];
}
if(nowsum>maxsum){
maxsum=nowsum;
}
}
}
return maxsum;
}
法二:持续更新