jjdcxy


私信TA

用户名:uq_76496496625

访问量:415

签 名:

提升自我

等  级
排  名 7168
经  验 1282
参赛次数 2
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业 软件工程

  自我简介:

TA的其他文章

枚举思想解决
浏览:203

解题思路:

注意事项:

参考代码:

#include

#include

int max(int x,int y)//比较返回最大的那个

{

if(x>y)

return x;

else

return y;

}

int main()

{

int dp[1000][1000];

char arr[1000];

scanf("%s",arr);

int n=strlen(arr);

for(int i=0;i<n;i++)

for(int j=0;j<n;j++)

{

if(arr[i]==arr[n-j-1])//当字符相同时,此处等于上一步加一(具体了解动态规划)

dp[i+1][j+1]=dp[i][j]+1;//保存的是原串的i号位置之前的所有字符跟逆序串的j号位置之前的所有字符的最大公共子序列

else

{

dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);//如果不相同,等于较大的,dp[i+1][j+1]不会比其中任何一个小,也不会比较大的大

}


}

printf("%d",n-dp[n][n]);

return 0;


 

0.0分

2 人评分

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

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区