一直都没来得及完成关于算法课上的实验任务,今天终于算是有时间把这个给写了。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
//蛮力法
int maxSum(int a[],int n){
int maxsum=0;
int sum=0;
for(int i=0;i<n;i++){
sum=a[i];
for(int j=i+1;j<n;j++){
if(sum>=maxsum){
maxsum=sum;
}
sum+=a[j];
}
}
return maxsum;
}
//分治法
int maxSum1(int a[],int left,int right){
int sum=0;
if(left==right){
if(a[left]>0)
sum=a[left];
else
sum=0;
}
else{
int center=(left+right)/2;
int leftsum=maxSum1(a,left,center);
int rightsum=maxSum1(a,center+1,right);
int s1=0,lefts=0;
for(int i=center;i>left;i--){