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:(代码)动态规划:求一串序列数中子序列和最大的数的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 动态规划专题:最长回文子序列

闭关修炼 动态规划1——最长公共子序列(UVA111)

JAVA动态规划,最长递增子序列的代码太难理解,求大神帮我讲解一下!

动态规划-最长非降子序列

动态规划(分割整数)---按平方数分割整数

动态规划 最长子序列