一、设计思路:
初始化max为a[0];sum依次计算和,如果sum大于零且大于max,将max值更新,否则,sum继续往后加,避免例如 2,-1,2 这种情况,如果sum值小于零,则将sum值归零,循环。
统计始末位置下标,每更新max记录尾标,每归零sum值,起始下标更新。
二、源代码:
1 package ketang; 2 3 public class Zishuzu { 4 public static void main(String[] args){ 5 int []a={5,3,-2,-1,10}; 6 int []b={-5,-3,2,-1,-10}; 7 int []c={-5,-3,-2,-1,-10}; 8 max(a); 9 maxhuan(a);10 max(b);11 max(c);12 }13 public static void max(int []a){14 int max=a[0],sum=0,wei=0,tou = 0;15 String s="";16 for(int i=0;i=0){20 if(sum>max){21 max=sum;22 wei=i;23 }24 else25 continue;26 }27 else{28 sum=0;29 s="";30 }31 }32 wei++;33 //全负数和尾负数处理34 if(s.equals("")){35 if(max<0){36 max=a[0];37 for(int i=0;i max){39 max=a[i];40 tou=i;41 }42 }43 tou++;44 wei=tou;45 }46 else{47 for(int i=0;i 0){49 tou=i;50 break;51 }52 }53 tou++;54 }55 }56 else57 tou=Integer.parseInt(String.valueOf(s.charAt(0)))+1;58 System.out.println("最大和:"+max+" "+"头:"+tou+" 尾:"+wei);59 }60 61 public static void maxhuan(int []a){62 int[] aa=new int[(2*a.length)-1];63 for(int i=0;i
三、截图: