题目描述:
一个非空整数数组,选择其中的两个位置,使得两个位置之间的数和最大。
如果最大的和为正数,则输出这个数;如果最大的和为负数或0,则输出0 。
输入描述:
3,-5,7,-2,8
输出描述:
13
输入
-6,-9,-10
输出
0
源码:
解法一:
public class Main {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
String s=in.next();
String[] strs=s.split(",");
int max=0,tmp=0,a;
for(String i : strs){
a=Integer.parseInt(i);
tmp+=a;
if(tmp<0) tmp=0;
if(tmp>max) max=tmp;
}
System.out.println(max);
}
}
解法二:动态规划
static int getMaxSum(int[] arr) {
int max=0;
int curMax=0;
for (int i = 0; i < arr.length; i++) {
curMax = Math.max(arr[i],curMax+arr[i]);
max=Math.max(curMax,max);
}
return max;
}