课堂练习03

课堂练习03

设计思路:

设置最大值变量(用来存放二维子数组和的最大值)

在一维子数组和的求值上的基础上,在最外层再加循环。{

求一维子数组和的最大值;

把一维子数组错位使最后一个数成为第一个数,第一个数成为第二个数......

如果最大值(二维)小于这次循环的数组子数组和的最大值(一维),更新最大值(二维);

                         }

得到并显示二维子数组和的最大值。

程序源代码:

 

1 public class Test2 {
 2      public static void main(String args[]){
 3          int Array[]={0,1,5,-4,9,10,54,-6,-34,78}; 
 4          int MAX=Array[0];
 5          for(int ii=0;ii<10;ii++){
 6              int max=Array[0];int sum=Array[0];
 7              for(int i=1;i<10;i++){
 8                  if(sum+Array[i]>=sum){
 9                      sum=sum+Array[i];
10                      if(sum>max){
11                      max=sum;}
12                  }    
13                  else if(sum+Array[i]<0){
14                      sum=0;
15                  }
16                  else{
17                      sum=sum+Array[i];
18                  }                 
19              }
20              int a=Array[0];
21              for(int iii=0;iii<9;iii++){
22                  Array[iii]=Array[iii+1];                 
23              }
24              Array[9]=a;
25              if(MAX<max){
26                  MAX=max;
27              }28          }
29          System.out.println("和最大的子数组的和为:"+MAX);
30      }
31 }

 

                     

总结:在写首尾相接的时候,总会的遇见数组越界情况,所以运用了,当和小于自己设定的最大值的时候,我们将求的的和从新定义成

团队照片:

posted @ 2016-04-13 15:10  林.夕  阅读(107)  评论(0编辑  收藏  举报