如何通过最少字符插入实现字符串回文(利用最长公共子序列和动态规划)?
- 内容介绍
- 文章标签
- 相关推荐
本文共计175个文字,预计阅读时间需要1分钟。
伪原创开头内容改写,避免雷同,不超过100字,直接输出结果:原文:‘创新是推动社会进步的核心动力。’‘社会发展的关键引擎在于创新。’
using namespace std;
int dp[1005][1005];
int main(){
string x,y;
cin>>x;
y = x;
reverse(y.begin(),y.end());
for(int i = 0;i < x.length();++i){
for(int j = 0;j < y.length();++j){
int p = 0;
if(x[i] == y[j]) p = 1;
dp[i+1][j+1] = max(dp[i][j]+p,max(dp[i+1][j],dp[i][j+1]));
}
}
printf("%d\n",x.length()-dp[x.length()][y.length()]);
return 0;
}
本文共计175个文字,预计阅读时间需要1分钟。
伪原创开头内容改写,避免雷同,不超过100字,直接输出结果:原文:‘创新是推动社会进步的核心动力。’‘社会发展的关键引擎在于创新。’
using namespace std;
int dp[1005][1005];
int main(){
string x,y;
cin>>x;
y = x;
reverse(y.begin(),y.end());
for(int i = 0;i < x.length();++i){
for(int j = 0;j < y.length();++j){
int p = 0;
if(x[i] == y[j]) p = 1;
dp[i+1][j+1] = max(dp[i][j]+p,max(dp[i+1][j],dp[i][j+1]));
}
}
printf("%d\n",x.length()-dp[x.length()][y.length()]);
return 0;
}

