PAT甲级 1045 Favorite Color Stripe (30分)

动态规划,最长不下降子序列,LIS问题,刚看完,还是很快就写出来了,记一下怕自己忘。

#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
int main()
{
    int n, m, l, temp, count = 0, num[210], a[10010], dp[10010], ans = -1;
    fill(num, num + 210, INF);
    scanf("%d%d", &n, &m);
    for(int i = 0; i < m; i++){
        scanf("%d", &temp);
        num[temp] = i;
    }
    scanf("%d", &l);
    for(int i = 0; i < l; i++){
        scanf("%d", &temp);
        if(num[temp] != INF) a[count++] = temp;
    }
    for(int i = 0; i < count; i++){
        dp[i] = 1;
        for(int j = 0; j < i; j++){
            if(num[a[j]] <= num[a[i]] && dp[i] < dp[j] + 1) dp[i] = dp[j] + 1;
        }
        ans = max(ans, dp[i]);
    }
    printf("%d", ans);
    return 0;
}
发布了29 篇原创文章 · 获赞 0 · 访问量 369

猜你喜欢

转载自blog.csdn.net/qq_33942309/article/details/105579681