链接:https://www.nowcoder.com/acm/contest/6/C
来源:牛客网
题目
输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。
我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串,如"aba"和"xyyx")。
需要求出所有可能的C中价值最大的字符串,输出这个最大价值即可

输入

第一行一个整数T(T ≤ 50)。
接下来2T行,每两行两个字符串分别代表A,B(|A|,|B| ≤ 50),A,B的字符集为全体小写字母。

输出

对于每组数据输出一行一个整数表示价值最大的C的价值。

Input

2
aa
bb
a
aaaabcaa

Output

4
5
#include <bits/stdc++.h>
using namespace std; const int N = ;
const int INF = 0x3f3f3f3f;
char a[N], b[N];
int dp[N][N][N][N]; int main ()
{
int T; scanf("%d", &T);
while(T--) {
memset(dp,,sizeof(dp));
scanf("%s%s", a+, b+);
int l1 = strlen(a+), l2 = strlen(b+);
int ans = ;
for(int len1=; len1 <= l1; len1++)
{
for(int len2=; len2 <= l2; len2++)
{
for(int i=, j=i+len1-;j <= l1; i++,j++)
{
for(int k=,l=k+len2-; l <= l2; k++,l++)
{
if(len1 == && len2 == )
dp[i][j][k][l] = ;
else if((len1 == && len2 == ) || (len1 == && len2 == ))
dp[i][j][k][l] = ;
else
{
dp[i][j][k][l] = -INF;
if(i<j && a[i] == a[j]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i+][j-][k][l] + );
if(k<l && b[k] == b[l]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i][j][k+][l-] + );
if(i<=j && k<=l && a[i]== b[l]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i+][j][k][l-]+);
if(i<=j && k<=l && a[j] == b[k]) dp[i][j][k][l] = max(dp[i][j][k][l], dp[i][j-][k+][l]+);
ans = max(ans, dp[i][j][k][l]);
}
}
}
}
}
printf("%d\n", ans);
}
return ;
}

nowcoder 合并回文子串的更多相关文章

  1. 合并回文子串(区间dp)

    链接:https://ac.nowcoder.com/acm/problem/13230来源:牛客网 题目描述 输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变.如" ...

  2. 美团2017年CodeM大赛-初赛A轮 C合并回文子串

    区间dp一直写的是递归版本的, 竟然超时了, 学了一下非递归的写法. #include <iostream> #include <sstream> #include <a ...

  3. Manacher's algorithm: 最长回文子串算法

    Manacher 算法是时间.空间复杂度都为 O(n) 的解决 Longest palindromic substring(最长回文子串)的算法.回文串是中心对称的串,比如 'abcba'.'abcc ...

  4. 后缀数组 - 求最长回文子串 + 模板题 --- ural 1297

    1297. Palindrome Time Limit: 1.0 secondMemory Limit: 16 MB The “U.S. Robots” HQ has just received a ...

  5. 小白月赛13 B小A的回文串 (马拉车算法求最长回文子串)

    链接:https://ac.nowcoder.com/acm/contest/549/B来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  6. [leetcode]5. Longest Palindromic Substring最长回文子串

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  7. LeetCode[5] 最长的回文子串

    题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...

  8. 最长回文子串-LeetCode 5 Longest Palindromic Substring

    题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...

  9. 最长回文子串(Longest Palindromic Substring)

    这算是一道经典的题目了,最长回文子串问题是在一个字符串中求得满足回文子串条件的最长的那一个.常见的解题方法有三种: (1)暴力枚举法,以每个元素为中心同时向左和向右出发,复杂度O(n^2): (2)动 ...

随机推荐

  1. linux文本文件编辑命令

    1.cat命令 cat命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”. Linux系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个cat命令就是用于查看 ...

  2. anacoda 安装默认源中没有的包

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 1 安装失败 conda install pygame 2 搜索 anaconda se ...

  3. pycharm python3.5 神奇的导入问题

    说明:pycharm目录中没有同名.py文件,则可以直接用import util导入: 若有同名.py文件,则导入的时候需要加入所在文件夹名称

  4. Sitecore CMS中查看标准字段

    什么是标准字段? 标准字段是字段及其字段组的集合,用于包含有关Sitecore中项目的可配置元数据.Sitecore中继承自“标准模板”模板的任何项目都将包含这些字段. 可以在“标准模板”模板项找到/ ...

  5. oracle查询每隔5分钟区间内的数据量

    SELECT COUNT (DISTINCT tmp.PLATE) totalNum, tmp.newTime FROM ( SELECT T .LICENSE_PLATE plate, TO_CHA ...

  6. datetime处理日期和时间

    datetime.now() # 获取当前datetimedatetime.utcnow() datetime(2017, 5, 23, 12, 20) # 用指定日期时间创建datetime 一.将 ...

  7. android手机平板如何使用usb有线网卡

    最近有个项目需要在android平板上使用usb有线网卡,所以做了一部分工作,在这里简单总结一下. 我在TB上购买了一个micro-usb接口的android免驱有线网卡,这个网上很多,随便买一个符合 ...

  8. 大数据和hadoop的一些基础知识

    一.前言 大数据这个概念不用我提大家也听过很多了,前几年各种公开论坛.会议等场合言必及大数据,说出来显得很时髦似的.有意思的是最近拥有这个待遇的名词是“人工智能/AI”,当然这是后话. 众所周知,大数 ...

  9. Markdown使用笔记

    下载地址:http://markdownpad.com/ 简明版 Markdown 语法说明(简体中文版) 完整版 Markdown 语法说明(简体中文版) 官方文档:http://www.markd ...

  10. 使用Holer将本地端口映射到公网

    What is holer Holerexposes local servers behind NATs and firewalls to the public internet over secur ...