代码如下: #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));//找不到为-1scanf("%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;}