代码如下:#include<bits/stdc++.h>using namespace std;const int maxn=205;const int maxl=10004;int hashtable[maxn],tw[maxl];int dp[maxl];int main(){int n,m,l;memset(hashtable,-1,sizeof(hashtable));//找不到为-1 scanf("%d",&amp;n);//颜色总数 scanf("%d",&amp;m);//喜欢的 for(int i=0;i<m;i++){int colour; scanf("%d",&amp;colour);hashtable[colour]=i;//映射为数字}scanf("%d",&amp;l);//条纹的长度int num=0;for(int i=0;i<l;i++){int temp; scanf("%d",&amp;temp);if(hashtable[temp]>=0){tw[num]=hashtable[temp];num++;}} for(int i=0;i<num;i++){//printf("%d ",tw[i]);dp[i]=1;//初始化 }int ans=-1;//对tw序列找递增的for(int i=1;i<num;i++){for(int j=0;j<i;j++){if(tw[j]<=tw[i]){//前面的小 dp[i]=max(dp[i],dp[j]+1);}}ans=max(ans,dp[i]);//最长不下降 } printf("%d\n",ans); return 0; }