20140313

来源:互联网 发布:sql注入 from 编辑:程序博客网 时间:2024/05/21 17:52
package dynamic_programming;class Type {int sum;int begin;int end;Type(int sum, int begin, int end) {this.sum = sum;this.begin = begin;this.end = end;}Type copy() {return this;}}public class DynamicProgramming {public static void main(String[] args) {int[] a = new int[] { -3, 2, 4, 5, -7, -5, 6, 7, 8, -5, 2, 3, -2};System.out.println("数组为:");for(int tem: a)System.out.print(tem + " ");System.out.println();showMax(a);}public static void showMax(int[] n) {int temp = 0;Type type1 = new Type(n[0], 0, 0);Type type2 = new Type(n[0], 0, 0);for (int index = 0; index < n.length; index++) {if (temp < 0) {temp = n[index];if(type2.sum < type1.sum){type2 = type1.copy();}type1 = new Type(n[index], index, index);} else {temp += n[index];}if (type1.sum <= temp) {type1.sum = temp;type1.end = index;} }if(type2.sum < type1.sum){type2 = type1.copy();}System.out.println("开始位置索引:" + type2.begin);System.out.println("结束位置索引:" + type2.end);System.out.println("最大子数组和:" + type2.sum);}}

0 0