最大子数组求解
输入一个一维整形数组,数组里有正数也有负数。
一维数组首尾相接,像个一条首尾相接带子一样。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。
public class MaxIntArray { public static void main(String [] args){ int a[]={1,4,5,6,2}; int Max[]=new int[5]; Max[0] = 0; int i = 0;//数组下标 int j = 0;//最大值数组下标 int temp=0;//中间变量 while(i<a.length){ if(temp+a[i]>=Max[j]) { temp=temp+a[i]; Max[j]=temp; i++; } else if(temp+a[i]<Max[j]&&temp+a[i]>0) { temp=temp+a[i]; i++; } else if(temp+a[i]<=0) { i++; j++; Max[j]=0; temp=0; } } int max = Max[0]; for(int k=0;k<=j;k++){ if(Max[k]>max) { max=Max[k]; } } /*System.out.println(j); for(int k=0;k<=j;k++){ System.out.println(Max[k]); }*/ System.out.println("最大子数组和为"+max); } }