poj 2533 Longest Ordered Subsequence (DP:最长上升子序列)

来源:互联网 发布:淘宝助理如何导入宝贝 编辑:程序博客网 时间:2024/06/09 15:31

入门DP题目

令dp[i]表示为以a[i]结尾的最长上升子序列长度

则状态转移方程为:dp[j] = max(dp[j], dp[i]+1)

这个题在福州大学oj上面是第1348题

北大的输入可以不用while

但是福州大学的必须要while(scanf)

代码如下:

#include <cstdio>#include <algorithm>#define MAXN 1010using namespace std;int a[MAXN], dp[MAXN];int main(void) {    int n;    while(scanf("%d", &n) != EOF) {    for(int i=0; i<n; ++i) {        scanf("%d", &a[i]);        dp[i] = 1;    }    int ans = 1;    for(int i=0; i<n; ++i) {        for(int j=i+1; j<n; ++j) {            if(a[j] > a[i]) {                dp[j] = max(dp[i]+1, dp[j]);                ans = max(ans, dp[j]);            }        }    }    printf("%d\n", ans);    }    return 0;}


0 0
原创粉丝点击