最长公共子序列
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,m,a[1001],b[1001]; int f[1001][1001]; int main() { cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=m;i++) cin>>b[i]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { f[i][j]=max(f[i-1][j],f[i][j-1]); if(a[i]==b[j]) f[i][j]=max(f[i][j],f[i-1][j-1]+1); } cout<<f[n][m]<<endl; return 0; }