最长不下降子序列

样例输入
10
3 18 7 14 10 12 23 41 16 24
样例输出
6
#include <stdio.h>
int a[1005], dp[1005];
int main() {
    int  i, j, l, max;
    int  n;
    scanf("%d",&n);
    for(i = 1; i <= n; i++){
        scanf("%d",&a[i]);
        dp[i] = 1;
    }
    for(i = 1; i <= n; i++){
        l = 1;
        for(j = 1; j < i; j++){
            if(a[j] <= a[i]){
                if(dp[i] + dp[j] > l) l = dp[i] + dp[j];
            }
        }
        dp[i] = l;

        if(i == 1) max = l;
        else if(l > max) max = l;
    }
    
    printf("%d\n",max);
    
    
    return 0;
}

学会的第一个动态规划题目。。

上一篇:Java 1005 继续(3n+1)猜想


下一篇:[pat乙]1005 继续(3n+1)猜想