public class Solution01 {
public static void main(String[] args) {
int[] arr = {1, -3, 9, 10, -2, 3, -6, 5};
System.out.println(FindGreatestSumOfSubArray(arr));
}
public static int FindGreatestSumOfSubArray(int[] array) {
if(array.length==0)
return 0;
int sum = array[0];//保存每组的和
int maxSum = array[0];//连续子数组最大和
//动态规划
for(int i = 1;i<array.length;i++){
sum = Math.max(sum+array[i],array[i]);
maxSum = Math.max(sum,maxSum);
}
return maxSum;
}
}
while 1: l=map(int,raw_input().split()) sum=l[0] res=[] for i in range(1,len(l)): if sum>0: sum+=l[i] else: sum=l[i] res.append(sum) res=sorted(res) print res[-1] break
import java.util.Arrays; import java.util.Scanner; public class text2 { public static void main(String[] args) { Scanner aScanner=new Scanner(System.in); ArrayList<Integer> arrayList=new ArrayList<Integer>(); for(int i=0;i<8;i++) arrayList.add(aScanner.nextInt()); int bigsum=0; for(int i=0;i<arrayList.size();i++) { if(arrayList.get(i)>0) { int sum=0; for(int j=i;j<arrayList.size();j++) { sum=sum+arrayList.get(j); if(sum<0) break; else { if(bigsum<=sum) bigsum=sum; } } } } System.out.println(bigsum); } }
/** * 求一个数组中最大和的连续子数组 */ var arr = [1,2,3,4,-2,-5,0,15,-4,-10,200,17,-20,-21]; var sum = 0, max = 0; for(var i = 0; i < arr.length; i++){ if(arr[i] >= 0){ //当前元素为正数,如果之前的和小于0,就重新开始子数组统计,否则纳入到该子数组中 sum = sum < 0 ? arr[i] : sum + arr[i]; //更新最大和 max = Math.max(max,sum); }else{ //负数情况直接在总和里扣除 sum += arr[i]; } } console.log(max);