nyoj 37-回文字符串(reverse, 动态规划, lcs)
37-回文字符串
内存限制:64MB
时间限制:3000ms
Special Judge: No
accepted:10
submit:17
题目描述:
输入描述:
第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000.
输出描述:
每行输出所需添加的最少字符数
样例输入:
1
Ab3bd
样例输出:
2 分析:
①、vector字符的插入用的是push_back(c); eg: vec1.push_back(c);
②、要求一个串至少加多少个字符成为回文字符串,可以通过将其反转后与原串求lcs(最大公共子串);
③、将vector中的字符个数 - lcs即为所求;
④、字符串的反转,我们可以通过vector中的reverse
1、具体用法:reverse(vec1.begin(), vec1.end());
2、说明,酱紫将会将vec1中的数据从开始到结束的数据全部翻转最终结果复制到vec1中
LCS(模板):
int lcs(vector<char> vec1, vector<char> vec2) // vec2是vec1的反转串
{
memset(dp, , sizeof(vec1));
int len1 = vec1.size(), len2 = vec2.size(); // 当然这里的len1与len2是相等的
for(int i = ; i <= len1; ++ i)
{
for(int j = ; j <= len2; ++ j)
{
if(vec1[i-] == vec2[j-])
dp[i][j] = dp[i-][j-] + ; // 用dp[i][j]来村vec1的前i - 1个串与vec2的前j - 1个串的最大公共子串
else
dp[i][j] = max(dp[i-][j], dp[i][j-]);
}
}
return dp[len1][len2];
}
C/C++代码实现(AC):
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <stack>
#include <map>
#include <queue>
#include <set> using namespace std;
const int MAXN = ;
int dp[MAXN][MAXN]; int lcf(vector<char> vec1, vector<char> vec2)
{
int len1 = vec1.size(), len2 = vec2.size();
memset(dp, , sizeof(dp));
for(int i = ; i <= len1; ++ i)
{
for(int j = ; j <= len2; ++ j)
if(vec1[i-] == vec2[j-]) dp[i][j] = dp[i-][j-] + ;
else dp[i][j] = max(dp[i][j-], dp[i-][j]);
}
return dp[len1][len2];
} int main()
{
int t;
scanf("%d", &t);
while(t --)
{
vector<char> my_vec1, my_vec2;
char s[MAXN];
int len_s;
scanf("%s", s);
len_s = strlen(s);
for(int i = ; i < len_s; ++ i)
my_vec1.push_back(s[i]); // vector类型的数据通过push_back插入数据
my_vec2 = my_vec1;
reverse(my_vec1.begin(), my_vec1.end()); //将数组my_vec1反转
printf("%d\n", my_vec1.size() - lcf(my_vec1, my_vec2));
}
return ;
}
nyoj 37-回文字符串(reverse, 动态规划, lcs)的更多相关文章
- [NYOJ 37] 回文字符串
回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当 ...
- nyoj 37 回文字符串 【DP】
先反向复制一个新的字符串,然后再找出最长公共子串,在用长度n减去就可以 回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 所谓回文字符串,就是一个字符串,从 ...
- NYOJ -37回文字符串
这道题看了好大会没有思路,上网一搜发现这么简单,但是我为什么就想不到呢,??就是求和它的逆序之后的字符串最长公共子序列,然后用总的长度减去它就行了.原因是是因为只要是在公共子序列里面,那么他就是对称的 ...
- nyoj 题目37 回文字符串
回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当 ...
- nyist oj 37 回文字符串 (动态规划经典)
回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 所谓回文字符串,就是一个字符串.从左到右读和从右到左读是全然一样的.比方"aba".当 ...
- nyoj 37回文串
述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串.现在要求你,给你一个字符串,可 ...
- 【又见LCS】NYOJ-37 回文字符串
[题目链接] 回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba& ...
- nyoj 回文字符串
回文字符串 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当 ...
- 51Nod - 1092 回文字符串(添加删除字符LCS变形)
回文字符串 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间添加一些字符,使之变为回文字符串. 例如:abbc 添加2个字符可以变为 acbbca, ...
随机推荐
- 机器学习:weka源码在eclipse的配置和异常VerifyError的解决
今天把weka源码导入eclipse,打算学习下weka源码,遇到一些问题,网上资料不足,自己总结下,希望为后来人铺路. 1)新建java项目,命名weka3-6 2)把weka-src.jar解压, ...
- window 下Notepad++设置为文本文件的默认打开程序失败
1.右键Notepad++的可执行程序,选择"属性" -- "兼容性" , 设置Notepad++以管理员的身份运行 2.打开Notepad++ ," ...
- call,apply和bind详解
一.call和apply call和apply其实是同一个东西,区别只有参数不同,call是apply的语法糖,所以就放在一起说了,这两个方法都是定义在函数对象的原型上的(Function.proto ...
- 推荐几个IT交流社区
博客园,csdn,掘金,StackOverflow(境外),v2ex,开源中国,简书,头条
- Node.js事件的正确使用方法
前言 事件驱动的编程变得流行之前,在程序内部进行通信的标准方法非常简单:如果一个组件想要向另外一个发送消息,只是显式地调用了那个组件上的方法.但是在 react 中用的却是事件驱动而不是调用. 事件的 ...
- Spring 源码阅读之 深入理解 finishBeanFactoryInitialization
源码入口 上篇博文中我们看到了将Spring环境中的 BeanPostProcessor找出来,添加到BeanFactory中的beanPostProcessors中,统一维护,本片博文继续往下拓展, ...
- python的递归函数怎么用
在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰 使用递归函数需要注意防止栈溢出.由于栈的大小不 ...
- Spring MVC(3)Spring MVC 高级应用
一.Spring MVC 的数据转换和格式化 前面的应用,都只是用HandlerAdapter去执行处理器. 处理器和控制器不是一个概念,处理器是在控制器功能的基础上加上了一层包装,有了这层包装,在H ...
- Java基础学习框架总结
内容:Java基础知识全面复习 时间:2019.9.3-2019.9.26 代码:D:/ProgramFiles/IDEA/hello_sort 一.基础知识 learning1 case分支 Inp ...
- Android自定义控件:图形报表的实现(折线图、曲线图、动态曲线图)(View与SurfaceView分别实现图表控件)
图形报表很常用,因为展示数据比较直观,常见的形式有很多,如:折线图.柱形图.饼图.雷达图.股票图.还有一些3D效果的图表等. Android中也有不少第三方图表库,但是很难兼容各种各样的需求. 如果第 ...