最长公共子序列

int n;cin>>n;
    int ans=0;
    vector<int> a(n+1),b(n+1);
    vector<vector<int>> dp(n+1,vector<int>(n+1));
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int j=1;j<=n;j++) cin>>b[j];

    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
            if(a[i]==b[j]){
                dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
            }
        }
    }
    ans=dp[n][n];
    cout<<ans<<endl;

posted on 2024-09-10 19:49  TaopiTTT  阅读(3)  评论(0编辑  收藏  举报