#include <iostream>
using namespace std;
//求连续元素和的最大
template<class T>
void max_sum(const T *a,int size){
T sum[size][size];
T max=0;
int index,len;
for(int i=0;i<size;++i){
for(int j=0;j<size;++j)
sum[i][j]=0;
sum[i][1]=a[i];
}
for(int i=0;i<size;++i)
{
for(int j=1;j<size&&((i+j)<size);++j)
// if(sum[i][j+1]<(sum[i][j]+a[i+j-1]))这行如果加上就错误了
{
sum[i][j]=sum[i][j-1]+a[i+j-1];
cout<<"sum["<<i<<"]["<<j<<"]:"<<sum[i][j]<<endl;
if(max<sum[i][j])
{
index=i;len=j;
max=sum[i][j];
}
}
}
cout<<"起始元素a["<<index<<"]:"<<a[index]<<" 最大长度:"<<len<<" 最大元素值:"<<sum[index][len]
<<endl;
}
int main(){
int a[]={9,-12,120,8,-20,100,30,-89,20};
max_sum(a,9);
return 0;
}
|