求最长子序列(动态规划)

  1. 废话不多说,代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    
    
    const int N = 1010;
    int a[N], f[N];
    
    
    int main(){
        int n; 
        scanf("%d", &n);
        for(int i = 1; i <= n; i ++) scanf("%d", a + i);
    
        for(int i = 1; i <= n; i ++){
            f[i] = 1;
            for(int j = 1; j < i; j ++)
                if(a[j] < a[i]) f[i] = max(f[j] + 1, f[i]);
        }
    
        int res = 1;
        for(int i = 1; i <= n; i ++) res = max(res, f[i]);
        printf("%d", res);
        return 0;
    }
    
  2. 局部所有情况寻求最优解以达到全局最优解,仔细理解体会动态规划的核心思想。

posted @ 2022-02-11 22:59  ture?  阅读(40)  评论(0编辑  收藏  举报