一、最长公共子序列
#include<bits/stdc++.h>
#include<string>
#include<cstdio>
#include<iostream>
using namespace std;
string solve(string s1,string s2){
s1="*"+s1;
s2="&"+s2;
int n1=s1.size(),n2=s2.size();
int dp[n1+1][n2+1];
memset(dp,0,sizeof(dp));
string ans="";
for(int i=1;i<n1;i++){
for(int j=1;j<n2;j++){
if(s1[i]==s2[j]){
dp[i][j]=dp[i-1][j-1]+1;
}
else
dp[i][j]=max(dp[i-1][j],dp[