배열 과 최대 하위 배열 을 구하 십시오.

상위 코드 먼저:
질문 코드 원본: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;
}


좋은 웹페이지 즐겨찾기