nyoj37添加字符成回文串

原创 2016年08月30日 12:34:44

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如”aba”。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
样例输入
1
Ab3bd
样例输出
2
本来是没有什么思路的,看了别人的博客才明白了一点。
简单来说就是定义字符串s1,s2 s1是原字符串s2是原字符串的逆转字符串。
将这两个字符串求最长公共子序列,就是不需要再次匹配的,用字符串总长度减去他就可以了。dp[i][j]表示的是第一个字符串的前i个字符和第二个字符串的前j个字符串所能成的最大公共子序列。
可以自己画几个自己看看。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;
char s[1010],s2[1010];
int dp[1010][1010];
int main()
{
    int T;
    cin >>T;
    while(T--){
        scanf("%s",s);
        int len=strlen(s);
        for(int i=len-1,j=0;i>=0;i--,j++){
            s2[j]=s[i];
        }
        for(int i=0;i<len;i++){
            for(int j=0;j<len;j++){
                if(s2[j]==s[i]){
                    dp[i+1][j+1]=dp[i][j]+1;
                }
                else{
                    dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]);
                }
            }
        }
        cout <<len-dp[len][len]<<endl;
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

判断一个字符串能否通过添加一个字符变成回文串

蘑菇街笔试题目: 判断一个字符串能否通过添加一个字符变成回文串 相关概念: “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 回文可分为两种:偶数...

插入最少字符使原串变成回文串

51nod1092 回文字符串 解法一: 将原串逆序之后求一下LCS即可:#include using namespace std; const int maxn=1000; char a[max...

添加字符成为回文字符串

题目意思:就是添加最少的字符串,使之成为回文字符串 题目解析:还是从回文字符串出发,调用一个回文字符串的函数; 代码: #include #include #include #inc...

添加最少的字符使字符串成为回文

给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。

nyoj 37 回文字符串(最小的添加字符)

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最...

面试题:给定一个字符串,问是否能通过添加一个字母将其变为回文串

题目描述 给定一个字符串,问是否能通过添加一个字母将其变为回文串。 输入描述: 一行一个由小写字母构成的字符串,字符串长度小于等于10。   输出描述: 输出答案(YES\NO).   输入例...

例题9-7 划分成回文串 UVa11584

1.题目描述:点击打开链接 2.解题思路:本题要求划分回文串,且个数尽可能的少。可以用动态规划解决。先提前判断i~j是否构成回文串,时间复杂度是O(N^2),然后定义d(i)表示0~i-1划分成的回文...

20170604_分割成回文串

20170604_分割成回文串

UVA 11584 或 BNU20002 划分成回文串 DP求一个串最少能划分成多少个文回串

Problem H: Partitioning by Palindromes We say a sequence of characters is a palindrome if it is t...

dp问题 添加最少的字符构成回文串

A palindrome is a symmetrical string, that is, a string read identically from left to right as well ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)