zoukankan      html  css  js  c++  java
  • nyoj 37 回文字符串

    回文字符串

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:4

    描述:

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


    输入
    第一行给出整数N(0<N<100)
    接下来的N行,每行一个字符串,每个字符串长度不超过1000.
    输出
    每行输出所需添加的最少字符数
    样例输入
    1
    Ab3bd
    样例输出
    2


    分析:先将原字符串进行逆置,然后求逆置后的字符串与原字符串的最长公共子序列


    代码:

    <span style="font-size:18px;">#include <cstdio>
    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <cstring>
    using namespace std ;
    
    int dp[1000][1000] ;
    string str,tmp ;
    int n ;
    
    int main()
    {
        while(scanf("%d",&n)!=EOF)
        {
            while(n--)
            {
                cin>>str ;
                tmp = str ;
                reverse(tmp.begin(),tmp.end()) ;
                for(int i = 0 ;i<str.size() ;i++)
                {
                    for(int j = 0 ;j<tmp.size() ;j++)
                    {
                        if(str[i] != tmp[j])
                        {
                            dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]) ;
                        }
                        else
                        {
                            dp[i+1][j+1] = dp[i][j]+1 ;
                        }
                    }
                }
                printf("%d
    ",str.size() - dp[str.size()][tmp.size()]) ;
            }
        }
        return 0 ;
    }
    </span>


  • 相关阅读:
    蘑菇街teamtalk简介
    greenDAO简介
    Android 编译错误
    Android 中内容提供者的使用
    Android中使用http协议访问网络
    在Windows环境下设置terminal下调试adb
    Android中SQLite的使用
    sharedPreferences存储数据
    android中广播的使用
    fragment的使用
  • 原文地址:https://www.cnblogs.com/emoji/p/4436824.html
Copyright © 2011-2022 走看看