上代码先:
问题代码来源:http://blog.csdn.net/v_JULY_v
// MaxSum.cpp : 定义控制台应用程序的入口点。
//
//copyright@ July
//July、updated,2011.05.25。
#include "stdafx.h"
#include <iostream>
using namespace std;
int maxsum(int a[], int n)
{
int max = a[0];//全负情况,返回最大数
int sum = 0;
for (int j = 0; j< n; j++)
{
if (sum >= 0)
sum = sum + a[j]; //如果加上某个元素,sum>=0 的话,就加
else
sum = a[j]; //如果加上某个元素,sum<0 了,就不加
if(sum > max)
max = sum;
}
return max;
}
//Algorithm 4:时间效率为O(n)
//同上述第一节中的思路3、和4。
//《Data structures and Algorithm analysis in C》中实现。
int MaxSubsequenceSum(const int A[],int N)
{
int ThisSum,MaxSum,j;
ThisSum=MaxSum=0;
for(j=0;j<N;j++)
{
ThisSum+=A[j];
if(ThisSum>MaxSum)
MaxSum=ThisSum;
else if(ThisSum<0)
ThisSum=0;
}
return MaxSum;
}
int main()
{
int a[]={-1,-2,-3,-4,10,1,-3};
cout<<maxsum(a,7)<<endl;
cout<<MaxSubsequenceSum(a,7)<<endl;
getchar();
return 0;
}