TOJ 1765. Longest Ordered Subsequence

来源:互联网 发布:java自定义泛型类 编辑:程序博客网 时间:2024/04/30 03:42

Longest Ordered Subsequence 问题,主要是说按顺序递增的子序列的最长的长度

基本解题思路在于维护一个数组dp[m],其中,每个dp[i]都代表以c[i]为结尾的序列的长度,最后,在dp[m]中选出最大的一个数值,即为最终结果。

代码如下

#include <stdio.h>int main(){    int n;    scanf("%d",&n);    const int m = n;    int c[m];    for(int i = 0;i < n;i ++)        scanf("%d",c + i);    int dp[m];    for(int i = 0;i < n;i ++){        dp[i] = 1;    }    for(int i = 0;i < n;i ++){        int m = 1;        for(int j = 0;j < i;j ++){            if(c[j] < c[i]){                if(dp[j] + 1 > m)                    m = dp[j] + 1;            }        }        dp[i] = m;    }    int max = 0;    for(int i = 0;i < n;i ++){        if(max < dp[i])            max = dp[i];    }    printf("%d\n",max);    return 0;}
0 0
原创粉丝点击