최대 하위 열 과 문제 의 네 가지 해법
                                            
 14292 단어  데이터 구조 학습 과 실험 지도
                    
데이터 1: 샘플 과 등가, 테스트 기본 정확성, 데이터 2: 102 개 랜 덤 정수, 데이터 3: 103 개 랜 덤 정수, 데이터 4: 104 개 랜 덤 정수, 데이터 5: 105 개 랜 덤 정수;
int MaxSubseqSum1(int List[],int N)
{
 int i,j,k;
 int ThisSum,Maxsum=0;
 
 for(i=0;i<N;i++){
  for(j=i;j<N;j++){
   ThisSum=0;
   for(k=i;k<=j;k++)
    ThisSum+=List[k];
   if(ThisSum>MaxSum)
    MaxSum=ThisSum; 
  }
 }
 
 return MaxSum;
}시간 복잡 도 는 nnn 방법 2:
int MaxSubseqSum1(int List[],int N)
{
 int i,j;
 int ThisSum,Maxsum=0;
 
 for(i=0;i<N;i++){
  ThisSum=0;
  for(j=i;j<N;j++){
   Thissum+=List[j];//     i,   j,  j-1    
   if(ThisSum>MaxSum)
    MaxSum=ThisSum; 
  }
 }
 
 return MaxSum;
}시간 복잡 도 n * n
방법 3: 나 누 어 다스 린 다.
int Max(int A,int B,int C)
{
 return A>B?A>C?A:C:B>C?B:C//a>b?(a>c?a:c):(b>c?b:c)
}
int DivideAndConquer(int List[],int left,int right)
{
 int MaxLeftSum,MaxRightSum;
 int MaxLeftBorderSum,MaxRightBorderSum;
 
 int LeftBorderSum,RightBorderSum;
 int center i;
 
 if(left==right){
  if(List[left]>0)
   return List[left]
  else
   return 0;
 }
 center=(left+right)/2;
 MaxLeftSum=DivideAndConquer(List,left,center);
 MaxRightSum=DivideAndConquer(List,center+1,right);
 
 MaxLeftBorderSum=0;LeftBorderSum=0;
 for(i=center+1;i<=right;i++){
  RightBorderSum+=List[i];
  if(RightBorderSum>MaxRightBorderSum)
   MaxRightSum=RightBorderSum;
 }
 
 return Max3(MaxLeftSum,MaxRightSum,MaxLeftBorderSum+MaxRightBorderSum)
}
int MaxSubseqSum(int List[],int N)
{
 return DivideAndConquer(List,0,N-1);
}방법 4: 온라인 처리
int MaxSubseqSum4(int List[],int N)
{
 int i;
 int ThisSum,MaxSum;
 
 ThisSum=MaxSum=0;
 for(i=0;i<N;i++)
 {
  ThisSum+=List[i];
  if(ThisSum>MaxSum)
   MaxSum=ThisSum;
  else if(ThisSum<0)
   ThisSum=0;
 }
 
 return 0;
}