您的位置:首页 > 其它

求子数组最大和

2015-06-29 11:07 120 查看
#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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: