设计思路:(1)定义两个变量分别是数组和sum,和最大字数组和maxsum;
(2)把数组第一个元素值赋给sum和maxsum;
(3)如果sum<0;就把sum=0(一个数加上一个负数小于它本身)
(4)如果sum>maxsum;maxsum=sum;
源代码:
import java.util.Scanner; public class MaxOfSubArray { public static int max(int arr[]) { int sum=arr[0]; int maxsum=arr[0]; for(int i=1;i<arr.length;i++) { if(sum<0) { sum=0; } sum+=arr[i]; if(sum>maxsum) { maxsum=sum; } } return maxsum; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入数组长度:"); int n=sc.nextInt(); int arr[]=new int[n]; System.out.println("请输入数组元素:"); for(int i=0;i<n;i++) { arr[i]=sc.nextInt(); } System.out.println("子数组的最大和:"+max(arr)); } }