public class MaxSubSequence {
public static void main(String args[]) {
int[] source = { 1,-2,3,10,-4,7,2,-5 };
System.out.println(getMaxSubSequence(source));
}
public static String getMaxSubSequence(int[] source) {
if(source == null || source.length == 0)
return "输入数据有误";
int len = source.length;
int maxSum = source[0]; // 最大自序列的值
int tmp = source[0];; // 临时子序列的值
for (int index = 1; index < len; index++) {
if (maxSum < source[index]) {
maxSum = source[index];
}
tmp += source[index];
if (tmp < 0) {
tmp = 0;
continue;
}
if (maxSum < tmp && tmp >0) { //此处用tmp > 0 是为了处理全部为负数的情况
maxSum = tmp;
}
}
return maxSum+"" ;
}
}
以上只是做出了对子序列最大值的求和,而并没有打印出子序列,这个还得进行思考。
练习七:求子数列的最大和
最新推荐文章于 2020-09-09 11:51:03 发布