朱子宁


私信TA

用户名:2627458997

访问量:1417

签 名:

等  级
排  名 548
经  验 4262
参赛次数 67
文章发表 6
年  龄 0
在职情况 学生
学  校 怀化学院
专  业

  自我简介:

故事始于30号

解题思路:将此字符串倒过来,找它与原串的最长公共子序列,最后用原串的长度减去最长公共子序列的长度即可。

参考代码:

#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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区