#include<stdio.h>
#define LENGTH 10 
 
int max_subset(int 
*data,int len,int *s,int *l) 
{ 
    int max=0; 
    int i,j; 
    
int sum=0; 
    int start,end; 
 
    for(i=0;i<len;i++) 
    { 
        if(sum<=0) 
        { 
            sum=data[i]; 
        
    start=end=i; 
        } 
        else 
        { 
            
sum=sum+data[i]; 
            end=i; 
        } 
        if(sum>max) 
        { 
            max=sum; 
            *s=start; 
            
*l=end; 
        } 
    } 
 
    if(max==0) 
    { 
       
 max=data[0]; 
        *s=*l=0; 
        for(i=1;i<len;i++) 
        
{ 
            if(data[i]>max) 
            { 
                
max=data[i]; 
                *s=*l=i; 
            } 
        } 
   
 } 
    return max; 
} 
int main() 
{ 
	printf("输入10个数字\n");
  
  int data[LENGTH]; 
	for(int 
i=0;i<10;i++)
		scanf("%d",&data[i]);
    int result=0; 
    int 
s,l; 
    result=max_subset(data,LENGTH,&s,&l); 
    printf(" 
最大子数组值是 %d  数组内部从 %d 到 %d \n",result,s,l); 
 
    return 0; 
}
原文:http://www.cnblogs.com/xiaocongjiejie/p/3639262.html