#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