一开始一直没想明白,之后不断画图搞明白,一定要注意连续!!!连续这个词
例题:求数组{1,4,-5,9,8,3,-6}连续子数组的最大和
答案:子数组为{9,8,3}时输出20为这个的连续子数组的最大和
代码:
package a0413;
import java.util.Scanner;
public class MaincontinueZiarray {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<arr.length;i++){
arr[i]=sc.nextInt();
}
System.out.println(func(arr));
}
public static int func(int[] arr){
if(arr.length==0){
return 0;
}
int sum=arr[0];
int maxsum=arr[0];
for(int i=1;i< arr.length;i++){
sum=Math.max(sum+arr[i],arr[i]);
maxsum=Math.max(sum,maxsum);
}
return maxsum;
}
}
这里面最应该好好解释的就是那个for循环
大概就是这个样子。