2 条题解

  • -1
    @ 2022-11-12 14:21:57
    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <iomanip>
    #include <cmath>
    #include <queue>
    #include <map>
    #include <stack>
    #include <vector>
    using namespace std;
    #define long long LL
    const int N = 1e3+5;
    char a[N],b[N];
    int lena,lenb,dp[N][N];
    int main(){
    	scanf("%s%s" , a + 1, b + 1);
    	lena = strlen(a + 1);
    	lenb = strlen(b + 1);
    	for (int i = 1;i<=lena;i++)
    	{
    		for (int j = 1;j<=lenb;j++){
    			if (a[i] == b[j]){
    				dp[i][j] = dp[i - 1][j - 1] + 1; 
    			}
    			else{
    				dp[i][j] = max(dp[i-1][j],dp[i][j-1]);
    			}
    		}
    	}
    	cout << dp[lena][lenb];
    	return 0;
    }
    
    • -2

      #include <bits/stdc++.h> using namespace std; int f[10001][10001]; void lcs(string c,string d,int o,int k){ if(o0||k0) return; if(c[o-1]==d[k-1]){ lcs(c,d,o-1,k-1); cout<<c[o-1]; } else if(f[o-1][k]>f[o][k-1])lcs(c,d,o-1,k); else lcs(c,d,o,k-1); } int main(){ string a,b; cin>>a>>b; int n=a.size(); int m=b.size(); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i-1]==b[j-1])f[i][j]=f[i-1][j-1]+1; else f[i][j]=max(f[i-1][j],f[i][j-1]); } } cout<<f[n][m]; cout<<endl; lcs(a,b,n,m); return 0; }

      • 1

      信息

      ID
      1508
      时间
      1000ms
      内存
      256MiB
      难度
      9
      标签
      递交数
      154
      已通过
      13
      上传者