题目链接http://poj.org/problem?id=1159
LCS之前只写了一次,反串了以后都没有反应过来可以用LCS。。。
给出反串LCS代码:
//反串LCS #include<iostream> #include<cstring> #include<cmath> using namespace std; int n; char s[5005]; char rs[5005]; int dp[2][5005];///滚动数组 int lcs(char* str1,char* str2){ memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(str1[i-1]==str2[j-1]) dp[i%2][j]=dp[(i-1)%2][j-1]+1; else dp[i%2][j]=max(dp[(i-1)%2][j],dp[i%2][j-1]); } return dp[n%2][n]; } int main(){ while(cin>>n>>s){ int i; for(i=0;i<n;i++) rs[i]=s[n-i-1]; rs[i]='