Java:(代码)动态规划:求一串序列数中子序列和最大的数
Posted ITCROWDPLUS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:(代码)动态规划:求一串序列数中子序列和最大的数相关的知识,希望对你有一定的参考价值。
1 package DP; 2 //求子序列和最大值 3 public class MinNum { 4 public static void main(String[] args){ 5 int[] num = {-6, 2, 4, -7, 5, 3, 2, -1, 6, -9, 10, -2}; 6 int max = maxSum(num); 7 System.out.println(max); 8 int min = minSum(num); 9 System.out.print(min); 10 } 11 public static int maxSum(int[] num){ 12 int[] maxdp = new int[num.length]; 13 int max = -9999; 14 maxdp[0] = num[0]; 15 for(int i=1;i<num.length;i++){ 16 maxdp[i] = maxdp[i-1]>0?maxdp[i-1]+num[i]:num[i]; 17 if(maxdp[i] > max){ 18 max = maxdp[i]; 19 } 20 } 21 for(int i=0;i<num.length;i++){ 22 System.out.print(maxdp[i]+" "); 23 } 24 System.out.print(" "); 25 return max; 26 } 27 public static int minSum(int[] num){ 28 int[] mindp = new int[num.length]; 29 int min = 9999; 30 mindp[0] = num[0]; 31 for(int i=1;i<num.length;i++){ 32 mindp[i] = mindp[i-1]<0?mindp[i-1]+num[i]:num[i]; 33 if(mindp[i] < min){ 34 min = mindp[i]; 35 } 36 } 37 for(int i=0;i<num.length;i++){ 38 System.out.print(mindp[i]+" "); 39 } 40 System.out.print(" "); 41 return min; 42 } 43 }
以上是关于Java:(代码)动态规划:求一串序列数中子序列和最大的数的主要内容,如果未能解决你的问题,请参考以下文章