3 条题解
- 
  1
#include<bits/stdc++.h> using namespace std; const int N = 200 + 10; string a,b,ans; struct node { int num; int i; int j; }dp[N][N]; int main(){ cin >> a>>b; int lena = a.size(); int lenb = b.size(); for(int i = 1;i <= lena;i++) { for(int j = 1;j <= lenb;j++) { if(a[i - 1] == b[j - 1]) { dp[i][j].num = dp[i - 1][j - 1].num + 1; dp[i][j].i = i; dp[i][j].j = j; } else if(dp[i - 1][j].num > dp[i][j - 1].num) { dp[i][j].num = dp[i - 1][j].num; dp[i][j].i = dp[i - 1][j].i; dp[i][j].j = dp[i - 1][j].j; } else { dp[i][j].num = dp[i][j - 1].num; dp[i][j].i = dp[i][j - 1].i; dp[i][j].j = dp[i][j - 1].j; } } } cout << dp[lena][lenb].num << endl; for(int i = dp[lena][lenb].i,j = dp[lena][lenb].j,tmp;i | j;i = tmp) { ans = a[i - 1] + ans; tmp = dp[i - 1][j - 1].i; j = dp[i - 1][j - 1].j; } cout << ans; return 0; } 
信息
- ID
 - 1508
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 8
 - 标签
 - 递交数
 - 244
 - 已通过
 - 40
 - 上传者