暴力破解法:
思路:
从只含一个元素的子数组arr[0]开始向后面的子数组开始比较arr[1]、arr[2].....arr[6];取得这一系列子数组中的最大子数组;
然后从含有两个相邻元素的子数组之和来进行对比,即arr[0]+arr[1]与arr[1]+arr[2]....开始对比取这一系列的最大值
如此往复直到取到arr[0]+arr[1]+arr[2]+arr[3]+arr[4]+arr[5]+arr[6]的和
要点:注意在每一次循环相加后将sum的值清零
#include <stdio.h>
int main()
{
int arr[8] = {1,9,1,-9,-12,6,-4,10};
int sum = 0;
int max = arr[0];
for(int i=0;i<8;i++)//先从包含arr[0]的子数组开始进行循环累加判断,依次到arr[1],arr[2]...arr[7]直到取完元素
{
sum=0;
for(int j=i;j<8;j++)//对arr[0],arr[0]+arr[1],arr[0]+arr[1]+arr[2]...;arr[1]+arr[2]+arr[3]......相邻元素之和的最大值进行判断赋值
{
sum=sum+arr[j];
max=(sum>max?sum:max);
}
}
printf("%d\n",max);
return 0;
}
这是最容易想到的方法,也是最笨的方法,有好的方法大家可以相互交流。