解题思路:将此字符串倒过来,找它与原串的最长公共子序列,最后用原串的长度减去最长公共子序列的长度即可。
参考代码:
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e3+10; int dp[N][N]; char c[N]; char b[N]; int main() { int i,j; cin >> c; int len=strlen(c); int k=len-1; /*for(i=0;i<len;i++){ b[i]=c[len-i-1]; }*/ for(i=0;i<len;i++){ b[i]=c[k--]; } for(i=1;i<=len;i++){ for(j=1;j<=len;j++){ if(c[i-1]==b[j-1]){ dp[i][j]=dp[i-1][j-1]+1; }else dp[i][j]=max(dp[i-1][j],dp[i][j-1]); } } cout<<len-dp[len][len]<<endl; return 0; }
0.0分
5 人评分
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:732 |
C语言考试练习题_排列 (C语言代码)浏览:1315 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:1031 |
C语言程序设计教程(第三版)课后习题10.1 (Java代码)浏览:1439 |
人见人爱A+B (C语言代码)浏览:626 |
母牛的故事 (C语言代码)浏览:920 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:763 |
C语言训练-求PI* (C语言代码)浏览:613 |
C语言训练-自由落体问题 (C语言代码)浏览:611 |
printf基础练习2 (C语言代码)浏览:617 |