最大子数组的和

来源:互联网 发布:域名备案还是网站备案 编辑:程序博客网 时间:2024/05/22 08:04

最大子数组的和

思路:

采用动态规划的思路,假设对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且和最大的连续子数组实际上,要么是以第i-1个元素结尾且和最大的连续子数组加上这个元素,要么是只包含第i个元素。

当i-1个元素的最大和大于0时,加上第i个元素自然会更大。

当i-1个元素的最大和小于0时,第i个元素本身更大。

import java.util.*;public class Main5 {public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s=sc.nextLine();//读入一行string String[] c=s.split("\\s+");//根据空格进行分割 int[] arr=new int[c.length]; for(int i=0;i<c.length;i++) { arr[i]=Integer.parseInt(c[i]);//将string转为int型 } System.out.println(MaxSubArr(arr));}private static int MaxSubArr(int[] arr) {if(arr==null||arr.length==0) {return 0;}int max=arr[0];int cSum=0;for(int i=0;i<arr.length;i++) {if(cSum<0) {cSum=0;}cSum=cSum+arr[i];if(max<cSum) {max=cSum;}}return max;}}


原创粉丝点击