新学习的:最长递增子序列算法(动态规划一种),学会了算法也不是很难~
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int num[205]={0};
int len[10005]={0};
vector<int> stripe;
int n,m,l;
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int tmp;cin>>tmp;
num[tmp]=i;
}
cin>>l;
for(int i=1;i<=l;i++)
{
int tmp;cin>>tmp;
int prio=num[tmp];
if(prio)
{
stripe.push_back(prio);
}
}
int size=stripe.size();
for(int i=1;i<size;i++)
{
for(int j=0;j<i;j++)
{
if(stripe[i]>=stripe[j])
len[i]=max(len[i],len[j]+1);
}
}
int ins=0;
for(int i=1;i<size;i++)
if(ins<len[i]) ins=len[i];
cout<<++ins;
}