一、题目概述
Eva理想的色带由喜欢的颜色按照喜欢的顺序排列组成,求出给定色带中理想色带最大长度。
二、思路
动态规划思想,建立数组dp[], dp[i]为下标i的颜色为尾可以组成最大色带长度。
三、代码
#include <cstdio>
#include <vector>
using namespace std;
int main()
{
int N, M, L, ans = 0;
scanf("%d", &N);
vector<int> order(N + 1, 0);
scanf("%d", &M);
for( int i = 1, node; i <= M; ++i )
{
scanf("%d", &node);
order[node] = i;
}
scanf("%d", &L);
vector<int> a(L), dp(L, 0);
for( int i = 0; i < L; ++i )
{
scanf("%d", &a[i]);
if( order[a[i]] )
{
dp[i] = 1;
for( int j = 0; j < i; ++j )
if( order[a[j]] && order[a[j]] <= order[a[i]] && dp[j] + 1 > dp[i] )
dp[i] = dp[j] + 1;
if( ans < dp[i] )
ans = dp[i];
}
}
printf("%d", ans);
}