刷题44-最长递增子序列

原题链接

扩展题目1------最大子序列

题目描述

给定一个序列 An = a1 ,a2 ,  ... , an ,找出最长的子序列使得对所有 i < j ,ai < aj 。
求出这个子序列的长度

示例

输入:
1 -1 2 -2 3 -3 4
输出:
4

参考代码

public static void solve(int[] a) {
    
    
    // dp[i]表示从a[0]到a[i]的最长递增子序列长度
    int dp[] = new int[a.length];
    int max = 1;
    Arrays.fill(dp, 1);
    for (int i = 1; i < a.length; i++) {
    
    
        for (int j = 0; j < i; j++) {
    
    
            if(a[i]>a[j] && dp[i]<dp[j]+1){
    
    
                dp[i] = dp[j]+1;
            }
            max = Math.max(max, dp[i]);
        }
    }
    System.out.println(max);
}

总结

我觉得动态规划的难点还是动态规划数组怎么定义

猜你喜欢

转载自blog.csdn.net/Awt_FuDongLai/article/details/111320423