题解:

比较水的题目

dp[i][j]表示[i...j]最少改变几次变成回文字符串

那么有三种转移

dp[i][j] = dp[i+1][j-1] + s[i] != s[j]

dp[i][j] = dp[i+1][j] + 1(删除左边的字符,或者在右边添加一个字符与左边匹配)

dp[i][j] = dp[i][j-1] + 1(删除右边的字符,或者在左边添加一个字符与右边匹配)

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char S[];
int dp[][];
int dfs(int i, int j){
if(i >= j) return ;
if(dp[i][j] < ) return dp[i][j];
dp[i][j] = min(dp[i][j], dfs(i+, j) + );
dp[i][j] = min(dp[i][j], dfs(i, j-) + );
dp[i][j] = min(dp[i][j], dfs(i+, j-) + (S[i] != S[j]));
return dp[i][j];
} int main()
{
while(cin>>S){
int n = strlen(S);
memset(dp, , sizeof(dp));
cout<<dfs(, n-)<<endl;
}
return ;
}

hihocoder 1323 回文字符串(字符串+dp)的更多相关文章

  1. hihocoder 1323 - 回文字符串 - [hiho一下162周][区间dp]

    用dp[i][j]表示把[i,j]的字符串str改写成回文串需要的最小操作步数. 并且假设所有dp[ii][jj] (ii>i , jj<j)都为已知,即包括dp[i+1][j].dp[i ...

  2. hiho 1323 : 回文字符串 dp

    #1323 : 回文字符串 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串? 一次操作可以在任 ...

  3. [LeetCode] Palindromic Substrings 回文子字符串

    Given a string, your task is to count how many palindromic substrings in this string. The substrings ...

  4. [LeetCode] 647. Palindromic Substrings 回文子字符串

    Given a string, your task is to count how many palindromic substrings in this string. The substrings ...

  5. Java实现 LeetCode 730 统计不同回文子字符串(动态规划)

    730. 统计不同回文子字符串 给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7 的模. 通过从 S 中删除 0 个或多个字符来获得子字符序列. 如果一个字符 ...

  6. LeetCode Valid Palindrome 有效回文(字符串)

    class Solution { public: bool isPalindrome(string s) { if(s=="") return true; ) return tru ...

  7. (最长回文子串 线性DP) 51nod 1088 最长回文子串

    输入一个字符串Str,输出Str里最长回文子串的长度. 回文串:指aba.abba.cccbccc.aaaa这种左右对称的字符串. 串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符 ...

  8. [BZOJ4044]Virus synthesis 回文自动机的DP

    4044: [Cerc2014] Virus synthesis Time Limit: 20 Sec  Memory Limit: 128 MB Description Viruses are us ...

  9. [加强版] Codeforces 835D Palindromic characteristics (回文自动机、DP)

    题目链接: https://codeforces.com/contest/835/problem/D 题意: 一个回文串是\(1\)-回文的,如果一个回文串的左半部分和右半部分一样且都是\(k\)-回 ...

随机推荐

  1. 【转载】在C#中主线程和子线程如何实现互相传递数据

    引用:https://blog.csdn.net/shuaihj/article/details/41316731 一.不带参数创建Thread using System; using System. ...

  2. symfony 数据库使用(二)

    symfony可以根据数据用已经有表反向生成实体,以3.3.*为例: php bin/console doctrine:mapping:import --force AppBundle xml 从现有 ...

  3. web学习第二天

    今天是学习web的第二天,早上用css3做了个会动的小熊,border-radius为圆的半径, .smallxiong {    width: 400px;    height: 400px;    ...

  4. Python学习笔记:第一天python基础

    目录 1. python简介 2. python的安装 3. 编写第一个helloword 4. 变量和常量 5. 数据类型 6. 输入 7. if语句 1. python简介 python是在198 ...

  5. 牛客网暑期ACM多校训练营(第四场) F

    参考:http://www.cnblogs.com/Jadon97/p/9383027.html #include <iostream> #include <cstdio> # ...

  6. python基础集结号

    Python 号称是最接近人工智能的语言,因为它的动态便捷性和灵活的三方扩展,成就了它在人工智能领域的丰碑 走进Python,靠近人工智能 一.编程语言Python的基础 之 "浅入浅出&q ...

  7. malloc函数分配失败处理的严重性

    本次在实际测试情况下,发现程序无缘无故的异常,导致看门狗超时复位,经过排查是malloc函数分配失败的时候,依然对指针进行了操作,导致异常.以前没重视这个问题是因为,总觉的malloc基本都会成功的, ...

  8. ExtJs工具篇(3)——Aptana Studio3乱码的问题

            在Aptana Studio里面使用,发现输入的中文是乱码,在浏览器中浏览也是乱码,想着肯定是编码的问题,但是一直没有找到在那个地方设置.以为汉化后就可以了,没想到汉化后竟然还是乱码, ...

  9. android get cpu rate

    public static int getProcessCpuRate() { try { RandomAccessFile reader = new RandomAccessFile("/ ...

  10. 给apk签名

    一.签名 把apk和签名文件放在jdk bin目录下,然后在jkd bin目录下执行以下代码: jarsigner -verbose -keystore xxx.keystore -signedjar ...