最大子段和问题(C/C++)
一、蛮力法
#include<iostream>
using namespace std;
int MaxSum(int a[], int n)
{
int i,j;
int maxSum = 0;
for(i = 0; i < n; i++)
{
int sum = 0;
for(j = i; j < n; j++)
{
sum += a[j];
if(sum > maxSum)
{
maxSum = sum;
}
}
}
return maxSum;
}
int main()
{
int a[20];
int n,SUM=0;
cout<<"请输入序列的长度:";
cin>>n;
cout<<"请输入序列中的数值:"<<endl;
for(int i=0; i<n; i++)
{
cin>>a[i];
}
SUM=MaxSum(a,n);
cout<<"最长字段和为:";
cout<<SUM<<endl;
return 0;
}
二、分治法
#include<iostream>
using namespace std;
int