32-回文字符串(dp)
- 描述
- 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
- 输入
- 第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000. - 输出
- 每行输出所需添加的最少字符数
- 样例输入
-
1
Ab3bd - 样例输出
-
2
- 来源
- IOI 2000
- 上传者
- hzyqazasdf
- 思路:先前出该字符串的最大回文字串,该串除了最大回文串后剩余的不是回文,其实就添加字符使其成为回文,不能该影响最大的那个串,故只能在对应位置上配相同的字符
- 使得剩余的字符成为回文。
-
#include <iostream>
#include <cstring>
using namespace std;
int dp[1005][1003];
string str; int fun(int i, int j){
if(i > j){
return 0;
}
if(dp[i][j])
return dp[i][j];
if(i == j)
return dp[i][j] = 1;
if(str[i] == str[j])
return dp[i][j] = fun(i + 1, j - 1) + 2;
else
return dp[i][j] = max(fun(i + 1, j), fun(i, j - 1));
} int main(){
std::ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--){
cin >> str;
memset(dp, 0, sizeof(dp));
int ans = fun(0, str.length() - 1);
// cout << ans << endl;
cout << str.length() - ans << endl;
}
return 0;
}
32-回文字符串(dp)的更多相关文章
- hiho 1323 : 回文字符串 dp
#1323 : 回文字符串 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串? 一次操作可以在任 ...
- 51nod 1092 回文字符串 (dp)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092 这个题是poj-3280的简化版,这里只可以增加字符,设 dp[i ...
- nyoj 37 回文字符串 【DP】
先反向复制一个新的字符串,然后再找出最长公共子串,在用长度n减去就可以 回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 所谓回文字符串,就是一个字符串,从 ...
- hihocoder 1323 回文字符串(字符串+dp)
题解: 比较水的题目 dp[i][j]表示[i...j]最少改变几次变成回文字符串 那么有三种转移 dp[i][j] = dp[i+1][j-1] + s[i] != s[j] dp[i][j] = ...
- 【HIHOCODER 1323】回文字符串(区间DP)
描述 给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串? 一次操作可以在任意位置插入一个字符,或者删除任意一个字符,或者把任意一个字符修改成任意其他字符. 输入 字符串 S. ...
- (DP)51NOD 1006 最长公共子序列&1092 回文字符串
1006 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abc ...
- 【51nod 1092】 回文字符串(区间DP)
回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间添加一些字符,使之变为回文字符串. 例如:abbc 添加2个字符可以变为 acbbca,也可以添加3 ...
- NYOJ_37.回文字符串 (附滚动数组)
时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然,我们给你的问 ...
- 131. 132. Palindrome Partitioning *HARD* -- 分割回文字符串
131. Palindrome Partitioning Given a string s, partition s such that every substring of the partitio ...
- 【又见LCS】NYOJ-37 回文字符串
[题目链接] 回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba& ...
随机推荐
- JS内存知识点汇总
废话片: 讲到内存可以联想到很多,内存分配管理,内存回收机制,内存泄露等等,今天我们就来答题的总结一下. 正文片: 1.内存分配管理 2.内存回收机制 3.内存泄露 一.内存分配管理 首先让我们看看内 ...
- SQL1221N The Application Support Layer heap cannot be allocated. SQLSTATE=57011
不能分配“应用程序支持层“堆 内存不足(系统中可用的调页空间量或交换空间量或系统中可用的物理内存量),可能会导致问题,并提示如下错误信息: SQL1221N The Application Supp ...
- spring MVC multipart处理文件上传
在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势.Spring通过对Serv ...
- 字符串数组是可以保存并输出null。只不过不好动态指定长度
java里如何输出才能让字符串数组不显示出null 2014-05-23 17:46笨妞纤霏 | 浏览 1360 次 编程语言 代码如下package testCourse; public clas ...
- uva10780(分解质因数)
可以直接用高精度来暴力求. 也可以不用高精度: 把m分解质因数,记录每个因数和它的次数.然后计算每个因数在n的阶乘里出现了多少次,再把这个次数除以它在m中的次数,就是可能的k值.取最小的k. #inc ...
- tf.random_normal()函数
tf.random_normal()函数用于从服从指定正太分布的数值中取出指定个数的值. tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf. ...
- ICE的连接机制
1.当使用ICE的proxy进行方法调用时,ICE运行环境会建立一个到服务器的连接.当proxy提供了多个endpoint时 默认的ICE运行环境选择endpoint的行为为random,可以通过 ...
- LeetCode Max Consecutive Ones II
原题链接在这里:https://leetcode.com/problems/max-consecutive-ones-ii/ 题目: Given a binary array, find the ma ...
- django的related_name
转:https://segmentfault.com/q/1010000003705677 就是一个反向关联的属性,比方说model里面定义两个class,一个是A,一个是B class A(Mode ...
- 类和对象(12)—— this指针
首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针: ...