一、程序设计思想
在上一次的基础上,因为是首尾相连,所以将数组长度扩大为原数组长度的两倍即l*2,在原来进行找最大子数组的代码中往外套进一个循环,将数组前l的每一个数都作为依次计算最大子数组和的首位置。
二、合作过程
因为在原有基础上,只是加了一个循环,所以并未出现太多的讨论及冲突。
三、体会
就前几次结对开发来说,在编程中,两个人一起讨论,会让思路更加清晰,使自己少走弯路,两个人不同的优势也能使代码更加简便,不会过于繁杂,并且讨论也可以引发很多其他问题,是自己在知识储备上更进一步。
四、本次作业代码
1 //信1405-1班20142973魏垚 2 //最大子数组的和2:数组首尾相接 3 4 import java.util.Scanner; 5 public class Max_Array_02 { 6 7 public static void main(String[] args) { 8 // TODO Auto-generated method stub 9 10 Scanner in=new Scanner(System.in); 11 12 System.out.print("请输入数组长度:"); 13 int l=in.nextInt();//用户输入数组长度 14 15 int arr[]=new int[l*2];//定义数组 16 int arr1[]=new int[l*2];//储存子数组和 17 18 System.out.print("请依次输入数组中各元素:"); 19 for(int i=0;i<l;i++) 20 { 21 arr[i]=in.nextInt();//用户输入数组各个值 22 } 23 for(int j=l;j<l*2;j++) 24 { 25 arr[j]=arr[j-l];// 26 } 27 28 //找出最大子数组 29 int max=arr[0]; 30 for(int j=0;j<l;j++) 31 { 32 arr1[j]=arr[j]; 33 max=Math.max(max,arr[j]); 34 for(int i=j+1;i<l+j;i++) 35 { 36 if(arr1[i-1]>=0)//当前i个元素之和大于0就接着往后加 37 arr1[i]=arr[i]+arr1[i-1]; 38 if(arr1[i-1]<0)//当前i个元素之和小于0就不加,直接把下一个元素的值直接取下来 39 arr1[i]=arr[i]; 40 41 //找到最大值 42 max=Math.max(max,arr1[i]); 43 } 44 } 45 System.out.print(max);//打印最大值 46 47 in.close(); 48 } 49 }
五、截图