题目:无序整数序列,求连续子串最大和问题。
例如:{-23 17 -7 11 -2 1 -34},子串为{17 ,-7,11},最大和为21。
例如输入:-23 17 -7 11 -2 1 -34
输出:21。
备注:网上笔试题,代码是参考网上别人的,具体出处找不到了,请谅解。摘抄记录下来方便日后学习。如果有问题尽请批评指正,希望可以和大神一起交流
java代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//输入字符串类型,并请字符串转化为int类型的数组。
String[] nums = null;
nums = sc.nextLine().split(" ");
int num[]=new int[nums.length];
for(int i=0;i<num.length;i++){
num[i]=Integer.valueOf(nums[i]);
}
int m=maxSubSum(num);
System.out.println(m);
}
public static int maxSubSum(int[] array){
int sum = 0, max = array[0];
for(int i = 0; i < array.length; i++){
sum += array[i];
if(sum > max)
max = sum;
if(sum < 0) //如果 sum < 0, 将 sum 重新置 0
sum = 0;
}
return max;
}
}