/***************************************************************
用暴力枚举法求解最大子数组问题,时间复杂度为O(n的平方)
输入:
第一行为数组元素个数,第二行为数组中的元素值,如下:
16
13 -3 -25 20 -3 -16 -23 18 20 -7 12 -5 -22 15 -4 7
输出:
43
18 20 -7 12
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int length;
int *A;
int max,sum,maxi,maxj;
while(scanf("%d",&length)==1)
{
if(length!=0)
{
//输入数组元素
A=(int *)malloc(sizeof(int)*length);
for(int i=0;i<length;i++)
{
scanf("%d",&A[i]);
}
/**************************************************************/
//暴力枚举算法核心
max=A[0];
maxi=0;
maxj=0;
for(int i=0;i<length;i++)
{
sum=A[i];
for(int j=i+1;j<length;j++)
{
sum=sum+A[j];
if(max<sum)
{
maxi=i;
max=sum;
maxj=j;
}
}
}
/*************************************************************/
printf("max_sub_sum:%d\n",max);
for(;maxi<=maxj;maxi++)
printf("%d ",A[maxi]);
}
else break;
}
return 0;
}
最大子数组之暴力枚举法
最新推荐文章于 2021-12-28 00:46:10 发布