您的位置:首页 > 其它

数组最大子数组和

2013-11-21 14:18 169 查看
// maxofArray.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
using namespace std;
#define N 11
int max_sub_array(int &s,int &e,int * a);
int max_sub_array1(int &s,int &e,int * a);
int max_sub_array2(int &s,int &e,int * a);
int main()
{
int a
={31,-41,59,26,0,-53,58,97,-93,-23,84};
int start,end;
int sum = max_sub_array1(start,end,a);
cout << sum << "  "<<start<< " "<<end<< endl;
return 0;
}
int max_sub_array(int &s,int &e,int * a)
{
int i=0;
int j,k =0;
int b,start,end;
int sum = 0;
int max = a[0];
s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖÃ
for(i = 0;i < N; i++)
{

for (j=i;j<N;j++){
for(k=i;k<=j;k++){
sum += a[k];
}
if(sum > max){
max = sum;
start = i;
end =j;
}
sum=0;
}
}
s = start;
e= end;
return max;
}
//½â·¨Ò»¸Ä½ø°æ£º
//×Ðϸ×ÁÄ¥¾Í»á·¢ÏÖ£¬Æäʵ²»ÐèÒªÔÙʹÓÃkÈ¥±éÀú×ÓÊý×飬ÒòΪÿ´ÎjÒƶ¯¶¼»á²úÉúеÄ×ÓÊý×飬ËùÒÔÖ»ÒªÔÚÿ´ÎjÒƶ¯Ê±½øÐÐһϱȽϣ¬¾Í²»»á°Ñ×î´óֵ©µô¡£ËùÒÔÖ»ÓÐiºÍjÒƶ¯£¬¸´ÔӶȽµµÍµ½O£¨n^2£©¡£
//´úÂëÈçÏ£º
int max_sub_array1(int &s,int &e,int * a)
{
int i=0;
int j,k =0;
int start,end;
int sum = 0;
int max = a[0];
s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖÃ
for(i = 0;i < N; i++)
{
sum=0;
for (j=i;j<N;j++){
sum+=a[j];
if(sum > max){
max = sum;
start = i;
end =j;
}
}
}
s = start;
e= end;
return max;
}
int max_sub_array2(int &s,int &e,int * a)
{
int i=0;
int j =0;
int b,start,end;
int sum = 0;
sum = b = a[0];
s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖá£
for(i = 1;i<N;i++)
{
if(b>0)
{
b = b + a[i];
end = i;
}
else
{
b = a[i];
start = end = i;
}
if(sum<b)
{
sum = b;
s = start;
e = end;
}
}
return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: