#include<iostream>
using namespace std;
#define INF 9999;
int method1(int a[],int n)
{
int max=-INF;
int sum=0;
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
for(int k=i;k<=j;k++)
sum+=a[k];
if(sum>max)
max=sum;
sum=0;
}
}
return max;
}
int method2(int a[],int n)
{
int max=a[0];//存放最大子数组值
int sum=0;//存放每个子数组的值
for(int i=0;i<n;i++)
{
if(sum<0)
sum=a[i];
else
sum+=a[i];
if(sum>max)
max=sum;
}
return max;
}
void main()
{
int a[]={-3,-6,-2,-1,-7,-8,-9,-1,-2,-1,-3};
int result;
int n=sizeof(a)/sizeof(int);
cout<<"method1:"<<method1(a,n)<<endl;
cout<<"method2:"<<method2(a,n)<<endl;
system("pause");
}
求子数组最大和
最新推荐文章于 2021-11-14 11:59:14 发布