因为可以重复,所以要从dp[i][j-1]中转移
#include<iostream>
#include<algorithm>
using namespace std;
const int M=202,L=10004;
int dp[M][L];
int n,m,l;
int p[M],q[L];
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>p[i];
cin>>l;
for(int i=1;i<=l;i++) cin>>q[i];
for(int i=1;i<=m;i++)
for(int j=1;j<=l;j++)
{
if(p[i]==q[j])
dp[i][j]=dp[i][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
cout<<dp[m][l];
return 0;
}
dp的1维和2维分布表示啥?
动态转移方程又是啥意思?