软件工程第四周课上练习
源代码:
1 package 数组; 2 import java.util.*; 3 import java.util.Scanner; 4 public class Shuzu3 { 5 public static int maxSum(int arr[]){ //定义一个函数maxSum 求数组中子数组和的最大值 6 int sum = arr[0]; //sum 子数组和 7 int b = 0; 8 for(int i = 0;i<arr.length;i++) 9 { 10 if(b<=0) 11 { b=arr[i]; } //子数组和小于0时,b为子数组为0时的元素的后一位 12 else 13 {b+=arr[i]; } //b 子数组和 14 if(b>sum)sum=b; //将最大子数组和赋值给sum 15 } 16 return sum; 17 } 18 public static void main(String[] args) { 19 System.out.println("请输入数组中元素个数;"); 20 Scanner reader=new Scanner(System.in); 21 int n=reader.nextInt(); 22 int []array=new int[n]; 23 int []array1=new int[n]; 24 System.out.println("请输入数组:"); 25 for(int i=0;i<n;i++) //输入数组 26 { 27 array[i]=reader.nextInt(); 28 } 29 int sum = maxSum(array); //调用函数 30 for(int i=1;i<n;i++) //循环n-1次,从第二个数往后依次作为数组第一个数 31 { 32 for(int j=0;j<n;j++) //通过取余保证数组首尾相接 33 { 34 array1[j]=array[(j+i)%n]; 35 } 36 int sum1= maxSum(array1); //调用函数 37 if(sum1>sum) //取每个数组子数组最大值 38 { 39 sum=sum1; 40 } 41 } 42 System.out.println("最大字数组之和为:"+sum); 43 } 44 }
运行截图: