1,题目
2,代码
#include<stdio.h>
#include<string.h>
int N;
int M,favorite_colors[300];
int L,given_stripe[10010];
int maxLength=0,dp[10010];
int main(){
memset(dp,0,sizeof(dp));
scanf("%d",&N);
scanf("%d",&M);
for(int i=1;i<=M;++i) scanf("%d",&favorite_colors[i]);
scanf("%d",&L);
for(int i=1;i<=L;++i) scanf("%d",&given_stripe[i]);
for(int i=1;i<=L;++i){
if(given_stripe[i]==favorite_colors[1]) dp[i]=dp[i-1]+1;
else dp[i]=dp[i-1];
}
for(int i=2;i<=M;++i){
for(int j=i;j<=L;++j){
if(given_stripe[j]==favorite_colors[i]) {
int mal=-1;
for(int k=i;k<j;++k){
if(mal<dp[k]) mal=dp[k];
}
dp[j]=mal+1;
}
}
}
for(int i=1;i<=L;++i){
if(dp[i]>maxLength) maxLength=dp[i];
}
printf("%d",maxLength);
return 0;
}
版权声明:本文为qq_29006825原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。