zoukankan      html  css  js  c++  java
  • 最长递增子序列

     问题:

      求解一个数组的最长递增子序列。

    思路:

      如果要求一个问题的最优解(通常是最大值或者最小值),而且该问题能够分解成若干个子问题,并且小问题之间也存在重叠的子问题,则考虑采用动态规划。

    示例:

    1 arr[] = {3,1,4,1,5,9,2,6,5}
    2 最长递增子序列长度为4。
    3 即为:1,4,5,9

    code:

     1 public class Dp {
     2 
     3     public static int LIS(int[] A){
     4         int result = 1;
     5         int[] B = new int[A.length];         //存放每一个节点的LIS
     6         for (int i = 0; i < B.length; i++) { //初始化
     7             B[i] = 1;
     8         }
     9         for (int i = 1; i < A.length; i++) {
    10             for (int j =0; j < i; j++){
    11                 if(A[j] < A[i]){
    12                     B[i] = Math.max(B[i], B[j]+1);
    13                 }
    14             }
    15             result = Math.max(result, B[i]);
    16         }
    17         return result;
    18     }
    19 
    20     public static void main(String[] args) {
    21         System.out.println(LIS(new int[]{10, 9, 2, 5, 3, 7, 101, 18}));
    22     }
    23 }
  • 相关阅读:
    Java多个版本共存
    在RestHighLevelClient中增加用户名密码验证
    request Body 查询
    threadLocal
    thread 中断 interrupt
    Thread 状态和创建方法
    URI Search
    解析器
    基本crud
    第4章 SQL与关系数据库基本操作
  • 原文地址:https://www.cnblogs.com/yumingxing/p/9587880.html
Copyright © 2011-2022 走看看